Advertisement
Dece111

Solid DXF

Feb 28th, 2024
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'Solid DXF
  2.  
  3. Dim swApp As SldWorks.SldWorks
  4. Dim Model As ModelDoc2
  5. Dim DTable As DesignTable
  6. Dim WS_OBJ As Excel.Worksheet
  7. Dim part As Object
  8. Dim SelMgr As Object
  9. Dim NR_View As Byte
  10.  
  11.  
  12. Sub MODEL_SUB(ByVal NFD As String, ByVal ACTACT As Byte)
  13. ACT_MOD = INFO_DAT(NFD, 0, 6)
  14.  
  15. Set swApp = CreateObject("SldWorks.Application")
  16. swApp.Visible = False
  17.  
  18. Set part = swApp.OpenDoc6(SLD_PTH & Left(INFO_DAT(NFD, 0, 6), 10) & INFO_DAT(NFD, 0, 9) & ".SLDPRT", 1, 0, "", 0, 0) 'AGGIUNTA REVISIONE
  19. Select Case swApp.ActiveDoc.Extension.HasDesignTable()
  20. Case True
  21. Case False
  22. MsgBox "THIS FILE DO NOT CONTAINS ANY TABLE DESIGN", vbCritical
  23. Exit Sub
  24. End Select
  25. Set Model = swApp.ActiveDoc
  26. filePth = Model.GetPathName
  27.  
  28. STR_FNAME = Right(filePth, InStr(1, StrReverse(filePth), "\", vbBinaryCompare) - 1)
  29.  
  30. Set DTable = Model.GetDesignTable
  31. GET_ERR = swApp.GetErrorMessages(vMsgs, vMsgIds, vMsgTypes) 'RESETTA LO STACK MESSAGGI
  32.  
  33. isGood = DTable.Attach
  34. If isGood = False Then
  35. MsgBox "Table attachment failed", vbCritical
  36. Exit Sub
  37. End If
  38.  
  39. Set WS_OBJ = DTable.Worksheet
  40. Call TAB_EDT(NFD)
  41. Call MOD_CHECK(NFD)
  42.  
  43. VVVV = Replace(INFO_DAT(NFD, 0, 7), "H", "")
  44. VVVV = Replace(VVVV, "G", "")
  45. VVVV = Replace(VVVV, "P", "")
  46. VVVV = Val(VVVV)
  47.  
  48.  VW = VW_SET(VVVV)
  49.  RW = DTable.Worksheet.Range("VW_ROT", "VW_ROT").Value
  50.  MD = INFO_DAT(NFD, 0, 9)
  51.  
  52. For i = 1 To 100
  53. If InStr(1, INFO_DAT(NFD, 1, i), "MOD", vbTextCompare) > 0 Then
  54. REV_ON_DAT = INFO_DAT(NFD, 2, i)
  55. Exit For
  56. End If
  57. Next i
  58.  
  59. If MD <> REV_ON_DAT Then MsgBox "ATTENZIONE: INDICE DI REVISIONE ERRATO SU MODELLO " & INFO_VAR(0, 0), vbCritical
  60.     DTable.UpdateModel
  61.     DTable.Detach
  62. GET_ERROR = swApp.GetErrorMessages(vMsgs, vMsgIds, vMsgTypes)
  63. If GET_ERROR > 0 Then INFO_DAT(NFD, 0, 20) = ERR_TRAPP(GET_ERROR, vMsgs, vMsgIds, vMsgTypes) Else INFO_DAT(NFD, 0, 20) = ""
  64.  
  65. Call SUB_DXF(NFD, VW, RW, ACTACT)
  66.  
  67. Erase INFO_VAR
  68. NR_View = Empty
  69.    
  70. Set part = swApp.ActiveDoc
  71. Set SelMgr = part.SelectionManager
  72. Set part = Nothing
  73. swApp.CloseDoc STR_FNAME
  74. 'swApp.ExitApp
  75.  
  76.  
  77. RRR:
  78.    
  79.  
  80. End Sub
  81.  
  82. Sub TAB_EDT(ByVal NFG As Integer)
  83. Set DTable = part.GetDesignTable
  84. If DTable.Attach = False Then
  85. MsgBox "Table attachment failed", vbCritical
  86. Exit Sub
  87. End If
  88.  
  89. On Error GoTo ERR_LBL
  90. VARCOUNT = 0
  91. TAB_NAM = ActiveWorkbook.Name
  92. For Each NAMS In Workbooks(TAB_NAM).Names
  93. If InStr(1, NAMS.Name, "VAR_", vbBinaryCompare) Then
  94. DTable.Worksheet.Range(NAMS.Name, NAMS.Name).Value = 0
  95. VARCOUNT = VARCOUNT + 1
  96. End If
  97. Next NAMS
  98.  
  99. For i = 1 To 100
  100. LAB = Replace(INFO_DAT(NFG, 1, i), ".", "")
  101. VLR = INFO_DAT(NFG, 2, i)
  102.  
  103. If InStr(1, LAB, "VER", vbBinaryCompare) > 0 Then
  104. VLR = Replace(VLR, "H", "")
  105. VLR = Replace(VLR, "G", "")
  106. VLR = Replace(VLR, "P", "")
  107. VLR = Val(VLR)
  108. End If
  109.  
  110. For Each NAMS In Workbooks(TAB_NAM).Names
  111. If InStr(1, NAMS.Name, ".", vbBinaryCompare) > 0 Then MsgBox "ERRORE ETICHETTA SU TABELLA " & swApp.ActiveDoc
  112. If NAMS.Name = "VAR_" & LAB Then
  113. DTable.Worksheet.Range("VAR_" & LAB, "VAR_" & LAB).Value = VLR
  114. VARWRITE = VARWRITE + 1
  115. End If
  116. Next NAMS
  117. Next i
  118.  
  119. DTable.UpdateModel
  120. DTable.Detach
  121. GoTo ENDSUB
  122. ERR_LBL:
  123. MsgBox "ERRORE SU TABELLA " & INFO_DAT(NFG, 0, 6)
  124. ENDSUB:
  125. End Sub
  126.  
  127. Sub SUB_DXF(ByVal NFG As Integer, ByVal V_VIEW As Byte, ByVal R_VIEW As Double, ByVal ACTACT As Byte)
  128.  
  129. Dim boolstatus As Boolean
  130. Dim longstatus As Long, longwarnings As Long
  131. Dim Feature As Object
  132. Dim filePth As String
  133. Dim DrawWiew As Object
  134. Dim sVWiew  As SldWorks.View
  135.  
  136. Set swModel = swApp.ActiveDoc
  137. Set part = swApp.ActiveDoc
  138. Set SelMgr = part.SelectionManager
  139.  
  140. filePth = swModel.GetPathName
  141. drvVal = Left(filePth, 1)
  142. lenext = InStr(1, StrReverse(filePth), "\", vbBinaryCompare) - 1
  143. fileName = Left(Right(filePth, lenext), Len(Right(filePth, lenext)) - InStr(1, StrReverse(Right(filePth, lenext)), ".", vbBinaryCompare))
  144.  
  145. part.SetBendState 2
  146. boolstatus = part.EditRebuild3
  147.  
  148. 'Set part = swApp.OpenDoc6("\\NT1\TEP-VAULT\SWP\WitturETODrawing.DRWDOT", 3, 0, "", longstatus, longwarnings)
  149. Set part = swApp.OpenDoc6("\\nt1\UFFTEP\3D_parametrizzati\SWP\WitturETODrawing.DRWDOT", 3, 0, "", longstatus, longwarnings)
  150. Set DrawWiew = part.CreateDrawViewFromModelView2(filePth, VDS(V_VIEW), 0, 0, 0)
  151.  
  152. boolstatus = part.Extension.SelectByID2(NAME_VW, "DRAWINGVIEW", 0, 0, 0, False, 0, Nothing, 0)
  153. boolstatus = part.DrawingViewRotate(R_VIEW / 57.29578)   'TO ROTATE VIEW
  154.  
  155.     Set swModel = swApp.ActiveDoc
  156.     Set swSelMgr = swModel.SelectionManager
  157.     Set swModelDocExt = swModel.Extension
  158.  
  159.  Call DRW_CLR(1)
  160.  
  161.  
  162. If ACTACT = 1 Then
  163. If Application.UserName = "Galloni A." Or Application.UserName = "Sassi, Samuele (Wittur Italy)" Or Application.UserName = "Armencea, Decebal (Wittur Italy)" Then
  164. part.SaveAs2 OUTPUT_FOLDER & INFO_DAT(NFG, 0, 16) & ".DXF", 0, True, False 'NOME CON CUI SI SALVA IL DXF
  165. Else
  166. part.SaveAs2 DXF_CFOLD & INFO_DAT(NFG, 0, 16) & ".DXF", 0, True, False 'NOME CON CUI SI SALVA IL DXF
  167. End If
  168. End If
  169. If ACTACT = 2 Then part.SaveAs2 OUTPUT_FOLDER & INFO_DAT(NFG, 0, 16) & ".DXF", 0, True, False
  170.                                
  171.  
  172. Set part = swApp.ActiveDoc
  173. Set SelMgr = part.SelectionManager
  174. Set part = Nothing
  175. swApp.CloseDoc swApp.ActiveDoc.GetTitle
  176. Set part = swApp.ActivateDoc2(filePth, False, longstatus)
  177.  
  178. part.SetBendState 3
  179. boolstatus = part.EditRebuild3
  180.  
  181.  
  182. End Sub
  183.  
  184.  
  185. Function VDS(ByVal NVIEW As Byte) As String
  186.  
  187. LNG = UCase(swApp.GetCurrentLanguage)
  188.  
  189. Select Case LNG
  190. Case "ENGLISH"
  191.  CLang = 1
  192. Case "ITALIANO", "ITALIAN"
  193.  CLang = 2
  194. Case Else
  195. MsgBox "Errore su linguaggio", vbCritical
  196. End Select
  197.  
  198. Select Case NVIEW
  199. Case 1
  200.   If CLang = 1 Then VDS = "*Top"
  201.   If CLang = 2 Then VDS = "*Superiore"
  202. Case 2
  203.   If CLang = 1 Then VDS = "*Bottom"
  204.   If CLang = 2 Then VDS = "*Inferiore"
  205. Case 3
  206.   If CLang = 1 Then VDS = "*Right"
  207.   If CLang = 2 Then VDS = "*Destra"
  208. Case 4
  209.   If CLang = 1 Then VDS = "*Left"
  210.   If CLang = 2 Then VDS = "*Sinistra"
  211. Case 5
  212.   If CLang = 1 Then VDS = "*Front"
  213.   If CLang = 2 Then VDS = "*Frontale"
  214. End Select
  215.  
  216.  
  217. End Function
  218.  
  219.  
  220. Function NAME_VW() As String
  221.  
  222.     Dim swModel                 As SldWorks.ModelDoc2
  223.     Dim swDraw                  As SldWorks.DrawingDoc
  224.     Dim swSheet                 As SldWorks.Sheet
  225.     Dim sVWiew                  As SldWorks.View
  226.  
  227.     Set swModel = swApp.ActiveDoc
  228.     Set swDraw = swModel
  229.     Set sVWiew = swDraw.GetFirstView
  230.     Set sVWiew = sVWiew.GetNextView
  231.  
  232.     NAME_VW = sVWiew.GetName2
  233.  
  234. If NAME_VW <> "" Then Else MsgBox "NESSUNA VISTA CARICATA", vbCritical
  235.        
  236.  
  237. End Function
  238.  
  239.  
  240. Function VW_SET(ByVal NV As String) As Byte
  241.  
  242. NV = Replace(NV, "G", "")
  243. NV = Replace(NV, "H", "")
  244.  
  245. On Error Resume Next
  246. VW_SET = 99
  247. NVR = Val(Trim(NV))
  248.  
  249. VW_SET = DTable.Worksheet.Range("VW_00", "VW_00").Value
  250. If VW_SET = 99 Then
  251.  
  252.  
  253. Select Case NVR
  254. Case 1, 3
  255. VW_SET = DTable.Worksheet.Range("VW_01", "VW_01").Value
  256. Case 2, 4
  257. VW_SET = DTable.Worksheet.Range("VW_02", "VW_02").Value
  258. End Select
  259. End If
  260.  
  261. End Function
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. Sub DRW_CLR(ByVal ZSD As Byte)
  269.  
  270. Set swDraw = swApp.ActiveDoc
  271. Set swSheet = swDraw.GetCurrentSheet
  272. Set swView = swDraw.GetFirstView
  273. Set swView = swView.GetNextView
  274. Set swAnn = swView.GetFirstAnnotation
  275. Do While Not Nothing Is swAnn
  276. swAnn.Visible = 3
  277. Set swAnn = swAnn.GetNext3
  278. Loop
  279.  
  280. Set part = swApp.ActiveDoc
  281. Set SelMgr = part.SelectionManager
  282. boolstatus = part.SetUserPreferenceToggle(196, False)
  283.  
  284. End Sub
  285.  
  286.  
  287. Sub MOD_CHECK(ByVal NFG As Integer)
  288.  
  289. On Error GoTo ERR
  290. INFO_VAR(0, 1) = DTable.Worksheet.Range("REV_IND", "REV_IND").Value
  291. GoTo ENDFUNCT
  292. ERR:
  293. MsgBox "ATTENZIONE: NON RILEVATO INDICE DI REVISIONE SU MODELLO " & INFO_DAT(NFG, 0, 0)
  294. ENDFUNCT:
  295.  
  296. End Sub
  297.  
  298.  
  299. Function ERR_TRAPP(Count, vMsgs As Variant, vMsgIds As Variant, vMsgTypes As Variant) As String
  300. ERR_STR = ""
  301. For i = 0 To (Count - 1)
  302. ERR_STR = ERR_STR & " " & vMsgs(i)
  303. Next i
  304. ERR_STR = Replace(ERR_STR, Chr(13), "")
  305. ERR_TRAPP = Trim(Replace(ERR_STR, "Avvertenza: ", ""))
  306.  
  307. End Function
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement