Announcements
Attention for Customers without Multi-Factor Authentication or Single Sign-On - OTP Verification rolls out April 2025. Read all about it here.

Problem with "Automatic Drawings witjh iLogic"

cadprof
Enthusiast

Problem with "Automatic Drawings witjh iLogic"

cadprof
Enthusiast
Enthusiast

I have downloaded and applied Clint Brown's "Automatic Drawings with iLogic".  I have created a my templates (must they be a .dwg?) as an .idw

The file paths for the templates has been changed in the code.  I run from the opened window of the part / assembly but it does not give me any views. If I open the template and then that has the views and run the rule, the views change with the new part / assembly but I do not get the "scale" dialog box.

I've gone through the code but can't seem to find the problem.  I'm not a code guru but am capable of writing my own rules with iLogic and snippets.

Any ides / help would be deeply appreciated.  I think what Clint Brown has written is very and a big help.

0 Likes
Reply
377 Views
2 Replies
Replies (2)

Anonymous
Not applicable

If you can post your code that would be great, might be easier for comparing yours vs. Clint's.

0 Likes

cadprof
Enthusiast
Enthusiast

Thank you for the reply.  I did not make any major changes, but I have pasted the code here.

'Code By @ClintBrown3D
'Originally posted at https://clintbrown.co.uk/automatic-drawings-With-ilogic/
'Check if this is a drawing file
Dim doc = ThisDoc.Document
If doc.DocumentType = kDrawingDocumentObject Then
GoTo DRAWINGcode :
End If

'In parts & asemblies - Write file name and path to temp text file
oWrite = System.IO.File.CreateText("C:\TEMP\part.txt")
oWrite.WriteLine(ThisDoc.PathAndFileName(True))
oWrite.Close()
oFilePather = ThisDoc.Path & "\"

'In parts & asemblies - Write new drawing name to temp text file
oWrite = System.IO.File.CreateText("C:\TEMP\partno.txt")
oWrite.WriteLine(oFilePather & iProperties.Value("Project", "Part Number") & ".idw")
oWrite.Close()

'Read Drawing name from text file
oRead = System.IO.File.OpenText("C:\TEMP\partno.txt")
EntireFile1 = oRead.ReadLine()
oRead.Close()
oDrawingName = EntireFile1

'Copy the Template file > keep templates saved in your project workspace, you need a separate part and assembly template
Dim oCopyFiler As String = "ANDRITZ USA"
If doc.DocumentType = kAssemblyDocumentObject Then
oCopyFiler = "C:\Users\Public\Public Documents\Autodesk\Inventor 2019\Templates\English\Automate-Assy.idw"
Else If doc.DocumentType = kPartDocumentObject Then
oCopyFiler = "C:\Users\Public\Public Documents\Autodesk\Inventor 2019\Templates\English\Automate-Rev.idw"
End If

' Check if drawing exists - If it does, opening existing drawing
If System.IO.File.Exists(oDrawingName & DWGType) Then
MessageBox.Show("Drawing already exists > Opening Existing Drawing", "ANDRITZ USA")
ThisDoc.Launch(oDrawingName & DWGType)
Return
End If

'Launch New drawing
Dim oNewFiler As String = EntireFile1
System.IO.File.Copy(oCopyFiler,oNewFiler,(True))
ThisDoc.Launch(oNewFiler)

DRAWINGcode :
On Error GoTo Exiter
'Check if we have replaced the reference and scaled the drawing already
oNumbero = Parameter("Opened")
Parameter("Opened") = oNumbero + 1
MsgBox(Parameter("Opened"))
If Parameter("Opened") > 2 Then
Return
End If

'Read in File name - For reference
oRead = System.IO.File.OpenText("C:\TEMP\part.txt")
EntireFile = oRead.ReadLine()
oRead.Close()
oPartPath = EntireFile

'Replace Drawing Reference
doc = ThisDoc.Document
Dim oFileDesc As FileDescriptor
oFileDesc = doc.ReferencedFileDescriptors(1).DocumentDescriptor.ReferencedFileDescriptor
oFileDesc.ReplaceReference(oPartPath)
doc.Update()

'Read in new name for Drawing
oRead = System.IO.File.OpenText("C:\TEMP\partno.txt")
EntireFile1 = oRead.ReadLine()
oRead.Close()
oDrawingName = EntireFile1

'Save this drawing
ThisDoc.Save

'Scale the Drawing - Note your drawing views names("VIEW1")&("VIEW4") must match the template
On Error GoTo Exiter
oMyParameter = ThisDrawing.Document.Parameters.UserParameters
oParameter = oMyParameter.AddByValue("Scaler", "1:5", UnitsTypeEnum.kTextUnits)
MultiValue.SetList("Scaler","1:1", "1:2", "1:4", "1:5", "1:10", "1:20", "1:25", "1:50", "1:100")

Scaler = InputListBox("Set Drawing Scale", MultiValue.List("Scaler"), Scaler, Title := "Scale = " & ActiveSheet.View("VIEW1").ScaleString, ListName := "List")
ActiveSheet.View("VIEW1").ScaleString = Scaler
ActiveSheet.View("VIEW4").ScaleString = Scaler

Parameter.Param("Scaler").Delete

Exiter :
Msgbox("Scale not Changed")
0 Likes