Advertisement
Guest User

Untitled

a guest
Sep 30th, 2023
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 77.95 KB | None | 0 0
  1.  
  2. Option Explicit
  3.  
  4. Dim App As Object
  5. Dim Prg As Object
  6. Dim Cmds As Object
  7. Dim Cmd As Object
  8. Dim DCmd As Object
  9. Dim PCDMajorVersion As Integer
  10. Dim PCDMinorVersion As Integer
  11.  
  12.  
  13. Dim DimNames(99000) As String
  14. Dim DimAxes(99000) As String
  15. Dim DimRefNames(99000) As String
  16. Dim DimMeas(99000) As String
  17. Dim DimNoms(99000) As String
  18. Dim DimUTs(99000) As String
  19. Dim DimBonuses(99000) As String
  20. Dim DimLTs(99000) As String
  21. Dim DimDescrs(99000) As String
  22. Dim DimPCDCmdType(99000) As String
  23. Dim DimFCFType(99000) As String
  24. Dim DimCriticity(99000) As String
  25. Dim DimComments(99000) As String
  26. Dim DimRepMode(99000) As Integer
  27. Dim DimTPNodes(99000) As Integer
  28. Dim DimTPNodeRefs(99000) As Integer
  29. Dim myBonus As Double
  30. Dim DimCount As Integer
  31. Dim LastWasDimension As Boolean
  32.  
  33. Dim DFQWithNodes As Boolean
  34.  
  35.  
  36. Dim OldStr(99000) As String
  37.  
  38. Dim sSelSCA(99000) As String
  39. Dim iSelSca As Integer
  40. Dim iSelUsed As Integer
  41.  
  42. Dim TFName(1000) As String
  43. Dim TFMessage(1000) As String
  44. Dim TFValue (1000) As String
  45.  
  46. Dim TPNode As Integer
  47. Dim TPNodeRef As Integer
  48. Dim TPListNAM(99000) As String
  49.  
  50. Dim DimComment As String
  51. Dim RefPatternMode As Integer
  52. Dim SplitTPAndSize As Integer
  53. Dim UseK2005forMinMax As Boolean
  54.  
  55. '-------------------------------------
  56. ' COMPATIBILITY
  57. '-------------------------------------
  58. ' ==== This is To be uncommented For older PCDMIS Versions like 2017 ====
  59. 'Const TRACE_DISPLAY_MESSAGE = 1072
  60. 'Const SIZE_NOMINAL = 1068
  61. 'Const DATUM_ID = 1126
  62. 'Const SEGMENT_TOGGLE = 1065
  63. 'Const DATUM_FOS_NOMINAL = 1146
  64. 'Const DATUM_FOS_PLUSTOL = 1147
  65. 'Const DATUM_FOS_MINUSTOL = 1148
  66. 'Const DATUM_FOS_MEAS = 1149
  67. 'Const STANDARD = 1042
  68.  
  69. ' DATUM In K2002
  70. ' Commento Rapprto
  71. ' Tipo caratt. K2009
  72. ' Lim naturale inf.
  73.  
  74. Function IncrementTPNodes(str1 As String, IsTp As Boolean, IsTPAxis As Boolean) As Boolean
  75. Dim i As Long, NodeExists As Boolean
  76. NodeExists =False
  77.  
  78. For i=1 To TPNode
  79. 'If len(TPListNam(i))=len(str1) Then
  80. If TPListNam(i) = str1 Then NodeExists=True
  81. 'End If
  82. Next i
  83.  
  84. If NodeExists=False Then
  85. TPNode=TPNode +1
  86. TPListNam(TPNode)=str1
  87. End If
  88.  
  89. If IsTP Then TpNodeRef=0
  90.  
  91. If IsTPAxis Then TPNodeRef=TPNodeRef+1
  92.  
  93. IncrementTPNodes=True
  94. End Function
  95.  
  96. Function ConvertAxis(AxisStr As String, CommandType As Integer) As String
  97. ' Substitution of Axis Letter based On the command Type. If command Type is Not implemented In Case, Then gives back the original Axis Letter
  98. ' Select Case CommandType
  99. ' Case 1107
  100. ' ConvertAxis="DIST"
  101. ' Case 1102
  102. ' ConvertAxis="PLAN"
  103. ' Case Else
  104. ConvertAxis=AxisStr
  105. ' End Select
  106. End Function
  107.  
  108.  
  109. '================== Criticity separation And management =============
  110. Function SeparateStrings (ByVal Stringa As String) As Integer
  111. Dim i As Integer, j As Integer
  112. Dim Stringa1 As String, Stringa2 As String
  113.  
  114. iSelUsed=0
  115.  
  116. If Instr(1,Stringa,",")<=0 Then
  117. SeparateStrings=1
  118. sSelSCA(1)=Stringa
  119. Exit Function
  120. End If
  121.  
  122.  
  123. For j = 1 To 100
  124. i=InStr(1, Stringa, ",")
  125. If i=0 Then
  126. If j=1 Then
  127. SeparateStrings=0
  128. Exit For
  129. End If
  130. sSelSCA(j)=Stringa
  131. SeparateStrings=j
  132. Exit For
  133. End If
  134. Stringa1 = Left(Stringa, i - 1)
  135. Stringa2 = Right(Stringa, (Len(Stringa) - InStr(1, Stringa, ",")))
  136. Stringa = Stringa2
  137. sSelSCA(j) = Stringa1
  138. Next j
  139. SeparateStrings=j
  140. End Function
  141.  
  142. Function AssignCriticity() As String
  143. iSelUsed=iSelUsed+1
  144. If iSelUsed<=iSelSca Then AssignCriticity=sSelSca(iSelUsed) Else AssignCriticity=2
  145. End Function
  146. '===============================================================
  147.  
  148. Function IsCommentValid(str1 As String) As Boolean
  149. Dim i As Integer
  150. str1=trim(str1)
  151. If len(str1)=0 Then
  152. IsCommentValid=False
  153. Exit Function
  154. End If
  155. Dim tstStr As String
  156. tstStr=Left(str1,1)
  157. For i=1 To len(str1)
  158. If mid(str1,i,1)<> tstStr Then
  159. IsCommentValid=True
  160. Exit Function
  161. End If
  162. Next i
  163. IsCommentValid=False
  164. End Function
  165.  
  166.  
  167. Function AddDim(DimName As String, DimDescr As String, DimAxis As String, CmdType As String, DimNom As String, DimMea As String, DimUT As String, DimBonus As String, DimLT As String, DimFCFTyp As String, DimCrit As String, DimComm As String, DimRepMod As Integer, DimTPNode As Integer, DimTPNodeRef As Integer) As Boolean
  168. DimCount = DimCount + 1
  169. DimNames(DimCount) = DimName
  170. DimDescrs(DimCount) = DimDescr
  171. DimAxes(DimCount) = ConvertAxis(DimAxis, CmdType)
  172. DimNoms(DimCount) = DimNom
  173. DimMeas(DimCount) = DimMea
  174. DimUTs(DimCount) = DimUT
  175. DimBonuses(DimCount) = DimBonus
  176. DimLTs(DimCount) = DimLT
  177. DimPCDCmdType(DimCount) = CmdType
  178. DimFCFType(DimCount) = DimFCFTyp
  179. DimCriticity(DimCount) = DimCrit
  180. DimComments(DimCount) = DimComm
  181. DimRepMode(DimCount) = DimRepMod
  182. DimTPNodes(DimCount) = DimTPNode
  183. DimTPNodeRefs(DimCount) = DimTPNodeRef
  184. AddDim=True
  185. LastWasDimension=True
  186. End Function
  187.  
  188.  
  189.  
  190. Sub CreateFRFile(FileName As String, withNodes As Boolean)
  191.  
  192. Dim i As Integer
  193. Dim TFCont As Integer
  194. Dim IsTP As Boolean
  195. Dim IsTPAxis As Boolean
  196. Dim TPNodeOut As Integer, TPNodeRefOut As Integer
  197. Dim myBonus As Double
  198. Dim CommandType As Integer
  199. Dim CommandID As String
  200. Dim EnableMinMax As Boolean
  201. Dim ret As Boolean
  202. Dim TolsSign As Integer
  203. Dim LTLegacy As Double, UTLegacy As Double
  204.  
  205. DimCount = 0
  206. TFCont = 0
  207. EnableMinMax = False
  208. For i = 1 To 10000
  209. DimBonuses(i) = "0"
  210. Next i
  211.  
  212. FileName = "C:\Hexagon\FlexReport2\FlexReport2.txt"
  213. WriteLog "C:\hexagon\flexreport2\pcdimp.txt", "begin", True
  214. '===== Connect To PC-DMIS =====
  215. Set App = CreateObject("PCDLRN.Application") ' we Get the PC-DMIS main Object In "App"
  216. PCDMajorVersion = App.MajorVersion
  217. PCDMinorVersion = App.MinorVersion
  218. Set Prg = App.ActivePartProgram ' we Get from "App" the current PP And assign it To "Prg"
  219. Set Cmds = Prg.Commands ' we Get from "Prg" the Set of commnds And assign it To "Cmds"
  220.  
  221.  
  222. If (Prg.PartProgramSettings.MinusTolerancesShowNegative=True) Then TolsSign=1 Else TolsSign=-1
  223.  
  224.  
  225. '===== Service TF's =====
  226. TFCont = TFCont + 1
  227. TFName(TFCont) = "K1002"
  228. TFMessage(TFCont) = "PartName"
  229. TFValue(TFCont) = Prg.PartName
  230. TFCont = TFCont + 1
  231. TFName(TFCont) = "K1001"
  232. TFMessage(TFCont) = "SerialNumber"
  233. TFValue(TFCont) = Prg.SerialNumber
  234. TFCont = TFCont + 1
  235. TFName(TFCont) = "K1004"
  236. TFMessage(TFCont) = "RevisionNumber"
  237. TFValue(TFCont) = Prg.RevisionNumber
  238.  
  239. '======= Get the data from PC-DMIS dimensiosns And assign them To the arrays =======
  240. Dim DName As String, DDescr As String
  241. Dim RepMode As Integer
  242. DimCount = 0
  243. DimComment = ""
  244. LastWasDimension=True
  245. For i = 1 To Cmds.count ' we Loop over the total number of commands (To Get the total number we use property "count" applied To "Cmds")
  246. Set Cmd = Cmds.item(i) ' we Set the variable "Cmd" To the current "i" - 1,2,3...
  247.  
  248. If Cmd.Marked = False Then GoTo 9191
  249.  
  250. IsTP = False
  251. IsTPAxis = False
  252.  
  253. CommandType = Cmd.Type
  254. '=========== TRACE FIELDS ======
  255. If CommandType = 191 Then
  256. If Cmd.GetText(TRACE_NAME, 0) = "K2005" Then
  257. iSelSca = SeparateStrings(Cmd.GetText(TRACE_VALUE, 0))
  258. Else
  259. TFCont = TFCont + 1
  260. If PCDMajorVersion >= 14 Then
  261. TFName(TFCont) = Cmd.GetText(TRACE_NAME, 0)
  262. TFMessage(TFCont) = Cmd.GetText(TRACE_DISPLAY_MESSAGE, 0)
  263. TFValue(TFCont) = Cmd.GetText(TRACE_VALUE, 0)
  264. Else
  265. TFName(TFCont) = Cmd.GetText(TRACE_NAME, 0)
  266. TFMessage(TFCont) = Cmd.GetText(TRACE_NAME, 0)
  267. TFValue(TFCont) = Cmd.GetText(TRACE_VALUE, 0)
  268. End If
  269. End If
  270. End If
  271.  
  272. '=========== MIMAX ======
  273. If CommandType = 180 Then
  274. EnableMinMax = False
  275. If Cmd.GetToggleValue(DIM_HEADING, 1) = 4 Then EnableMinMax = True
  276. If Cmd.GetToggleValue(DIM_HEADING, 2) = 4 Then EnableMinMax = True
  277. If Cmd.GetToggleValue(DIM_HEADING, 3) = 4 Then EnableMinMax = True
  278. If Cmd.GetToggleValue(DIM_HEADING, 4) = 4 Then EnableMinMax = True
  279. If Cmd.GetToggleValue(DIM_HEADING, 5) = 4 Then EnableMinMax = True
  280. If Cmd.GetToggleValue(DIM_HEADING, 6) = 4 Then EnableMinMax = True
  281. If Cmd.GetToggleValue(DIM_HEADING, 7) = 4 Then EnableMinMax = True
  282. End If
  283.  
  284. '========== ANALYSYS VIEW ====
  285. If CommandType = 176 Then
  286. LastWasDimension = True
  287. End If
  288.  
  289. '=========== COMMENTS ======
  290. Dim Comment As String, iComment As Integer
  291. If CommandType = 170 Then
  292. If Cmd.GetToggleValue(COMMENT_TYPE, 0) = 2 Then
  293. If (LastWasDimension=True) Then DimComment = ""
  294. For iComment = 1 To 20
  295. Comment = Cmd.GetText(COMMENT_FIELD, iComment)
  296. ' remove the ~~
  297. If (Len(Comment) > 3) Then
  298. If Left(Comment, 2) = "~~" Then
  299. Comment = Right(Comment, Len(Comment) - 3)
  300. End If
  301. End If
  302. If IsCommentValid(Comment) Then
  303. If DimComment = "" Then DimComment = Comment Else DimComment = DimComment & "%20%" & Comment
  304. 'Exit For
  305. End If
  306. Next iComment
  307. LastWasDimension=False
  308. End If
  309. End If
  310.  
  311. '=========== LEGACY DIMENSIONS ======
  312. If Cmd.IsDimension = True And Cmd.Type<>1300 And Cmd.Type<>1303 And Cmd.Type <> 1302 Then
  313.  
  314. If CommandType = 1209 Then IsTP = True
  315. If CommandType = 1202 Then IsTPAxis = True
  316. If CommandType = 1203 Then IsTPAxis = True
  317. If CommandType = 1204 Then IsTPAxis = True
  318.  
  319. CommandID = Cmd.ID
  320.  
  321. WriteLog "C:\hexagon\flexreport2\pcdimp.txt", CommandID, False
  322.  
  323. Set DCmd = Cmd.DimensionCommand
  324. If DCmd.AxisLetter = "" Then
  325. DName = CommandID
  326. DDescr = Cmd.GetText(REF_ID, 0)
  327. RepMode = DCmd.OutputMode + 1
  328. Else
  329. If Cmd.ID <> "" Then
  330. DName = CommandID
  331. DDescr = ""
  332. If Cmd.GetText(REF_ID, 1) <> "" Then DDescr = DDescr & Cmd.GetText(REF_ID, 1) & " "
  333. If Cmd.GetText(REF_ID, 2) <> "" Then DDescr = DDescr & Cmd.GetText(REF_ID, 2) & " "
  334. If Len(DDescr) > 1 Then
  335. DDescr = Left(DDescr, Len(DDescr) - 1)
  336. End If
  337. RepMode = DCmd.OutputMode + 1
  338. End If
  339. 'MsgBox DName & "/" & DCmd.AxisLetter & " / " & DCmd.Plus
  340.  
  341. If CommandType = 1107 Then
  342. If left(Cmd.GetText(REF_ID, 3),1)="X" Or Right(Cmd.GetText(REF_ID, 3),1)="X" Then CommandType = 11071
  343. If left(Cmd.GetText(REF_ID, 3),1)="Y" Or Right(Cmd.GetText(REF_ID, 3),1)="Y" Then CommandType = 11072
  344. If left(Cmd.GetText(REF_ID, 3),1)="Z" Or Right(Cmd.GetText(REF_ID, 3),1)="Z" Then CommandType = 11073
  345. End If
  346.  
  347. If RepMode = 1 Or RepMode = 2 Or RepMode = 3 Or RepMode = 4 Then
  348. myBonus = 0
  349. If DCmd.AxisLetter <> "D1" And DCmd.AxisLetter <> "D2" Then ' We Do Not Output D1 And D2 (refernce elements In TP's)
  350. If IsTP = False And IsTPAxis = False Then
  351. TPNodeOut = 0
  352. TPNodeRefOut = 0
  353. TPNodeRef = 0
  354. Else
  355. ret = IncrementTPNodes(DName, IsTP, IsTPAxis)
  356. TPNodeOut = TPNode
  357. TPNodeRefOut = TPNodeRef
  358. myBonus = DCmd.Bonus
  359. End If
  360. ' Specific treatement For Gage Temp
  361. LTLegacy = -DCmd.Minus
  362. If CommandType = 405 Or CommandType = 406 Or CommandType = 407 Or CommandType = 408 Then LTLegacy = DCmd.Minus * TolsSign
  363. UTLegacy=DCmd.Plus
  364.  
  365. ret = AddDim(DName, DDescr, DCmd.AxisLetter, cstr(CommandType), Cstr(DCmd.Nominal), Cstr(DCmd.Measured), Cstr(DCmd.Plus + myBonus), Cstr(myBonus),Cstr(LTLegacy), "0", AssignCriticity(), DimComment, RepMode, TPNodeOut, TPNodeRefOut)
  366. If EnableMinMax = True And (DCmd.AxisLetter = "D" Or DCmd.AxisLetter = "R" Or CommandType = 1106 Or CommandType = 1107 Or CommandType = 1105 Or CommandType = 1118) Then
  367. ' For form only split In two UT
  368. If CommandType = 1105 Or CommandType = 1118 Then
  369. If Cmd.GetToggleValue(174, 0) = 1 Then
  370. UTLegacy = UTLegacy / 2
  371. LTLegacy = -UTLegacy
  372. End If
  373. End If
  374. 'iSelUsed = iSelUsed - 1
  375. ret = AddDim(DName, DDescr, DCmd.AxisLetter & "-MAX", CStr(CommandType), CStr(DCmd.Nominal), CStr(DCmd.Max), CStr(UTLegacy+ myBonus), CStr(myBonus), CStr(LTLegacy), "0", AssignCriticity(), DimComment, RepMode, TPNodeOut, TPNodeRefOut)
  376. 'iSelUsed = iSelUsed - 1
  377. ret = AddDim(DName, DDescr, DCmd.AxisLetter & "-MIN", CStr(CommandType), CStr(DCmd.Nominal), CStr(DCmd.Min), CStr(UTLegacy + myBonus), CStr(myBonus), CStr(LTLegacy), "0", AssignCriticity(), DimComment, RepMode, TPNodeOut, TPNodeRefOut)
  378. End If
  379. End If
  380. End If
  381. End If
  382. End If
  383.  
  384.  
  385. ' ---- Linear Size ----
  386. If CommandType = 1320 Or CommandType= 1321 Then
  387. CommandID = Cmd.ID
  388.  
  389. WriteLog "C:\hexagon\flexreport2\pcdimp.txt", CommandID, False
  390.  
  391. DName = CommandID
  392. DDescr = ""
  393. If Cmd.GetText(REF_ID, 1) <> "" Then DDescr = DDescr & Cmd.GetText(REF_ID, 1) & " "
  394. If Cmd.GetText(REF_ID, 2) <> "" Then DDescr = DDescr & Cmd.GetText(REF_ID, 2) & " "
  395. If Len(DDescr) > 1 Then
  396. DDescr = Left(DDescr, Len(DDescr) - 1)
  397. End If
  398. Set DCmd = Cmd.DimensionCommand
  399. RepMode = DCmd.OutputMode + 1
  400. If RepMode = 1 Or RepMode = 2 Or RepMode = 3 Or RepMode = 4 Then
  401. Dim myMaxMea As Double, myMinMea As Double, myNom As Double, myUT As Double, myLT As Double
  402. Dim myFType As String
  403. myNom = CDbl(Cmd.GetText(NOMINAL, 0))
  404. myMaxMea = Cmd.GetFieldValue(UPPER_SIZE, 0) ' CDbl(Cmd.GetText(UPPER_SIZE, 0))
  405. myMinMea = Cmd.GetFieldValue(LOWER_SIZE, 0) ' CDbl(Cmd.GetText(LOWER_SIZE, 0))
  406. myUT = Cmd.GetText(UPPER_TOLERANCE, 0)
  407. myLT = Cmd.GetText(LOWER_TOLERANCE, 0) * TolsSign
  408.  
  409. myFType = "SizeU"
  410. If InStr(1, Cmd.GetText(UPPER_MODIFIER, 1), "_", 1) < 1 Then myFType = myFType & "_" & Cmd.GetText(UPPER_MODIFIER, 1)
  411. If InStr(1, Cmd.GetText(UPPER_MODIFIER, 2), "_", 1) < 1 Then myFType = myFType & "_" & Cmd.GetText(UPPER_MODIFIER, 2)
  412. If Cmd.GetToggleValue(STANDARD, 0) = 1 Then
  413. ret = AddDim(DName, DDescr, myFType, CStr(CommandType), CStr(myNom), CStr(myMaxMea), CStr(myUT), "0", "-99999", "0", AssignCriticity(), DimComment, RepMode, 0, 0)
  414. Else
  415. myFType = "UAME"
  416. ret = AddDim(DName, DDescr, myFType, CStr(CommandType), CStr(myNom), CStr(myMaxMea), CStr(myUT), "0", CStr(myLT), "0", AssignCriticity(), DimComment, RepMode, 0, 0)
  417. End If
  418.  
  419. myFType = "SizeL"
  420. If InStr(1, Cmd.GetText(LOWER_MODIFIER, 1), "_", 1) < 1 Then myFType = myFType & "_" & Cmd.GetText(LOWER_MODIFIER, 1)
  421. If InStr(1, Cmd.GetText(LOWER_MODIFIER, 2), "_", 1) < 1 Then myFType = myFType & "_" & Cmd.GetText(LOWER_MODIFIER, 2)
  422.  
  423. If Cmd.GetToggleValue(STANDARD, 0) = 1 Then
  424. ret = AddDim(DName, DDescr, myFType, CStr(CommandType), CStr(myNom), CStr(myMinMea), "99999", "0", CStr(myLT), "0", AssignCriticity(), DimComment, RepMode, 0, 0)
  425. Else
  426. myFType = "Local"
  427. ret = AddDim(DName, DDescr, myFType, CStr(CommandType), CStr(myNom), CStr(myMinMea), CStr(myUT), "0", CStr(myLT), "0", AssignCriticity(), DimComment, RepMode, 0, 0)
  428. End If
  429. End If
  430.  
  431. End If
  432.  
  433.  
  434. '=========== FCF DIMENSIONS ======
  435. Dim i2 As Integer, i3 As Integer, i4 As Integer, i5 As Integer, FCFType As Integer
  436. Dim RefName As String, Mea As Double, Nom As Double, UT As Double, LT As Double, MaxMea As Double, MinMea As Double
  437. Dim iNumRowsAx As Integer, sDimAxis As String, FName As String, OUTName As String
  438. Dim bComposite As Boolean, b2Segments As Boolean, sPerUnit As String, ptr As Integer
  439. Dim ptrLine3 As Integer, ptrLine2 As Integer, ptrLine1 As Integer, ptrSummary As Integer, ptrSummary2 As Integer, CritCount As Integer
  440. Dim dummy As String, RefID1 As String, RefList As String
  441.  
  442. If CommandType = 1303 Or CommandType = 1302 Then
  443. TPNodeOut = 0
  444. TPNodeRefOut = 0
  445.  
  446. FName = Cmd.ID
  447. RepMode = Cmd.GetToggleValue(OUTPUT_TYPE, 0)
  448. FCFType = Cmd.getToggleValue(GDT_SYMBOL, 0)
  449.  
  450. WriteLog "C:\hexagon\flexreport2\pcdimp.txt", FName, False
  451.  
  452. ' 1303 ========= CIRTY, CYLTY (DATUMS=0, SIZES=0, PER_UNIT=0, COMPOSITE=0, GROUP=1) ===========
  453. If FCFType = 7 Or FCFType = 8 Then
  454. ' Dim axis - Output sequence : Global size, local size, gdt
  455. ptr = 0
  456. i3 = 0 ' count For criticity
  457. For i2 = 1 To 1000
  458. RefName = Trim(Cmd.GetText(REF_ID, i2))
  459. If RefName = "" Then GoTo 2007
  460. ptr = ptr + 1
  461. ' GDT
  462. Mea = Format(CDbl(Cmd.GetFieldValueEx(DIM_DEVIATION, ptr, "SEG=1")), "0.000000")
  463. UT = Format(CDbl(Cmd.GetFieldValue(FORM_TOLERANCE, 1)), "0.000000")
  464. OUTName = FName
  465. If i2 > 1 Then OUTName = FName & "_" & i2 - 1
  466. sDimAxis = Cmd.GetFieldValue(GDT_SYMBOL, 0)
  467. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, "0", Mea, UT, "0", "0", FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  468. i3 = i3 + 1
  469. ' Global size
  470. If (Cmd.GetText(USE_SIZE, 1) <> "0") Then
  471. Nom = Format(CDbl(Cmd.GetFieldValueEx(SIZE_NOMINAL, ptr, "SIZE")), "0.000000")
  472. UT = Format(CDbl(Cmd.GetFieldValueEx(UPPER_TOLERANCE, ptr, "SIZE")), "0.000000")
  473. LT = Format(CDbl(Cmd.GetFieldValueEx(LOWER_TOLERANCE, ptr, "SIZE")) * TolsSign, "0.000000")
  474. Mea = Format(CDbl(Cmd.GetFieldValueEx(UPPER_SIZE, ptr, "SIZE")), "0.000000")
  475. OUTName = FName
  476. If i2 > 1 Then OUTName = FName & "_" & i2 - 1
  477. sDimAxis = "Size_Global"
  478. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, Nom, Mea, UT, "0", LT, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  479. i3 = i3 + 1
  480. End If
  481. ' Local size
  482. If (Cmd.GetText(USE_SIZE, 2) <> "0") Then
  483. 'Nom = Format(CDbl(Cmd.GetFieldValueEx(SIZE_NOMINAL, ptr, "SIZE")), "0.000000")
  484. 'UT = Format(CDbl(Cmd.GetFieldValueEx(UPPER_TOLERANCE, ptr,"SIZE")), "0.000000")
  485. 'LT = Format(CDbl(Cmd.GetFieldValueEx(LOWER_TOLERANCE, ptr,"SIZE"))*TolsSign, "0.000000")
  486. Mea = Format(CDbl(Cmd.GetFieldValueEx(LOWER_SIZE, ptr, "SIZE")), "0.000000")
  487. OUTName = FName
  488. If i2 > 1 Then OUTName = FName & "_" & i2 - 1
  489. sDimAxis = "Size_Local"
  490. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, Nom, Mea, UT, "0", LT, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  491. i3 = i3 + 1
  492. End If
  493. ' Reset the criticity counter If Next is To Do
  494. If Cmd.GetText(REF_ID, i2 + 1) <> "" Then
  495. iSelUsed = iSelUsed - i3
  496. i3 = 0
  497. End If
  498. Next i2
  499. 2007:
  500. End If
  501.  
  502. ' 1302 ========= PERP, PARL (DATUMS=1, SIZES=1, PER_UNIT=0, COMPOSITE=0, GROUP=1) ===========
  503. ' 1302 ========= CONC, COAX , RUNOUTS (DATUMS=1, SIZES=0, PER_UNIT=0, COMPOSITE=0, GROUP=1) ===========
  504. ' 1302 (15,16)====== PROF, SURF (DATUMS=1, SIZES=0, PER_UNIT=1, COMPOSITE=1, GROUP=0)
  505. ' 1302 (9,10)========= STRA, FLAT (DATUMS=1, SIZES=1, PER_UNIT=1, COMPOSITE=0, GROUP=1) ====
  506. If FCFType = 11 Or FCFType = 12 Or FCFType = 5 Or FCFType = 6 Or FCFType = 13 Or FCFType = 14 Or FCFType = 17 Or FCFType = 18 Or FCFType = 15 Or FCFType = 16 Or FCFType = 9 Or FCFType = 10 Then
  507. ' Dim axis - Output sequence : Global size, local size, gdt
  508. ptr = 0
  509. i3 = 0 ' count For criticity
  510. For i2 = 1 To 1000
  511. RefID1 = Trim(Cmd.GetText(REF_ID, i2))
  512. If RefID1 = "" Then GoTo 2011
  513. ptr = ptr + 1
  514. ' GDT
  515. For i4 = 1 To 2
  516. If RefPatternMode = 0 Then
  517. RefName = RefID1
  518. For i3 = 1 To 100
  519. dummy = Trim(Cmd.GetTextEx(DATUM_ID, i3, "SEG=" & i4))
  520. If dummy = "" Then Exit For
  521. RefName = RefName & "-" & dummy
  522. Next
  523. End If
  524. If RefPatternMode = 1 Then
  525. 'Ref Name old method
  526. RefName = RefID1
  527. RefList = ""
  528. For i3 = 1 To 100
  529. dummy = Trim(Cmd.GetTextEx(DATUM_ID, i3, "SEG=" & i4))
  530. If dummy = "" Then Exit For
  531. RefList = RefList & dummy & " - "
  532. Next
  533. If (RefList <> "") Then
  534. RefList = " (" & Left(RefList, Len(RefList) - 3) & ")"
  535. End If
  536. RefName = RefName & RefList
  537. End If
  538.  
  539. If Cmd.GetTextEx(SEGMENT_TOGGLE, i4, "SEG=" & i4) = "" Then GoTo 3011
  540. Mea = Format(CDbl(Cmd.GetFieldValueEx(DIM_MEASURED, ptr, "SEG=" & i4)), "0.000000")
  541. MaxMea = Format(CDbl(Cmd.GetFieldValueEx(DIM_MAX, ptr, "SEG=" & i4)), "0.000000")
  542. MinMea = Format(CDbl(Cmd.GetFieldValueEx(DIM_MIN, ptr, "SEG=" & i4)), "0.000000")
  543. UT = Format(CDbl(Cmd.GetFieldValueEx(FORM_TOLERANCE, i4, "SEG=" & i4)), "0.000000")
  544. myBonus = Format(CDbl(Cmd.GetFieldValueEx(DIM_BONUS, ptr, "SEG=" & i4)), "0.000000")
  545. UT=UT+MyBonus
  546. OUTName = FName
  547. If i2 > 1 Then OUTName = FName & "_" & i2 - 1
  548. sDimAxis = Cmd.GetFieldValueEx(GDT_SYMBOL, ptr, "SEG=" & i4)
  549. ' Segments handling
  550. If FCFType = 15 Or FCFType = 16 Or FCFType = 9 Or FCFType = 10 Then
  551. If i4 = 2 Then sDimAxis = sDimAxis & " PER UNIT"
  552. End If
  553. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, "0", Mea, UT, "0", "0", FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  554. If FCFType = 15 Or FCFType = 16 Then
  555. If EnableMinMax = True Then
  556. if UseK2005forMinMax= False Then iSelUsed = iSelUsed - 1
  557. ret = AddDim(OUTName, RefName, sDimAxis & "-MAX", CommandType, "0", MaxMea, UT / 2, "0", -UT / 2, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  558. if UseK2005forMinMax= False Then iSelUsed = iSelUsed - 1
  559. ret = AddDim(OUTName, RefName, sDimAxis & "-MIN", CommandType, "0", MinMea, UT / 2, "0", -UT / 2, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  560. End If
  561. End If
  562. i3 = i3 + 1
  563. Next i4
  564. 3011:
  565. ' Global size
  566. If (Cmd.GetText(USE_SIZE, 1) <> "0") Then
  567. Nom = Format(CDbl(Cmd.GetFieldValueEx(SIZE_NOMINAL, ptr, "SIZE")), "0.000000")
  568. UT = Format(CDbl(Cmd.GetFieldValueEx(UPPER_TOLERANCE, ptr, "SIZE")), "0.000000")
  569. LT = Format(CDbl(Cmd.GetFieldValueEx(LOWER_TOLERANCE, ptr, "SIZE"))*TolsSign, "0.000000")
  570. Mea = Format(CDbl(Cmd.GetFieldValueEx(UPPER_SIZE, ptr, "SIZE")), "0.000000")
  571. OUTName = FName
  572. If i2 > 1 Then OUTName = FName & "_" & i2 - 1
  573. sDimAxis = "Size_Global"
  574. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, Nom, Mea, UT, "0", LT, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  575. i3 = i3 + 1
  576. End If
  577. ' Local size
  578. If (Cmd.GetText(USE_SIZE, 2) <> "0") Then
  579. 'Nom = Format(CDbl(Cmd.GetFieldValueEx(SIZE_NOMINAL, ptr, "SIZE")), "0.000000")
  580. 'UT = Format(CDbl(Cmd.GetFieldValueEx(UPPER_TOLERANCE, ptr,"SIZE")), "0.000000")
  581. 'LT = Format(CDbl(Cmd.GetFieldValueEx(LOWER_TOLERANCE, ptr,"SIZE"))*TolsSign, "0.000000")
  582. Mea = Format(CDbl(Cmd.GetFieldValueEx(LOWER_SIZE, ptr, "SIZE")), "0.000000")
  583. OUTName = FName
  584. If i2 > 1 Then OUTName = FName & "_" & i2 - 1
  585. sDimAxis = "Size_Local"
  586. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, Nom, Mea, UT, "0", LT, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  587. i3 = i3 + 1
  588. End If
  589. ' Datum size
  590. If (Cmd.GetTextEx(SHOW_OPTIONS, 0, "DATUMSIZE") = "YES") Then
  591. Nom = Format(CDbl(Cmd.GetFieldValueEx(DATUM_FOS_NOMINAL, ptr, "DATUMSIZE")), "0.000000")
  592. UT = Format(CDbl(Cmd.GetFieldValueEx(DATUM_FOS_PLUSTOL, ptr, "DATUMSIZE")), "0.000000")
  593. LT = Format(CDbl(Cmd.GetFieldValueEx(DATUM_FOS_MINUSTOL, ptr, "DATUMSIZE"))*TolsSign, "0.000000")
  594. Mea = Format(CDbl(Cmd.GetFieldValueEx(DATUM_FOS_MEAS, ptr, "DATUMSIZE")), "0.000000")
  595. OUTName = FName
  596. If i2 > 1 Then OUTName = FName & "_" & i2 - 1
  597. sDimAxis = "Size_Datum"
  598. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, Nom, Mea, UT, "0", LT, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  599. i3 = i3 + 1
  600. End If
  601. ' Reset the criticity counter If Next is To Do
  602. If Cmd.GetText(REF_ID, i2 + 1) <> "" Then
  603. iSelUsed = iSelUsed - i3
  604. i3 = 0
  605. End If
  606. Next i2
  607. 2011:
  608. End If
  609. '========== TP ==========
  610. If FCFType = 2 Then
  611.  
  612. ptr = 0
  613. i3 = 0 ' count For criticity
  614. For i2 = 1 To 1000
  615. RefID1 = Trim(Cmd.GetText(REF_ID, i2))
  616. If RefID1 = "" Then GoTo 2002
  617. ptr = ptr + 1
  618.  
  619. ' Loop On segments
  620. For i4 = 1 To 1000
  621. If RefPatternMode = 0 Then
  622. RefName = RefID1
  623. For i3 = 1 To 100
  624. dummy = Trim(Cmd.GetTextEx(DATUM_ID, i3, "SEG=" & i4))
  625. If dummy = "" Then Exit For
  626. RefName = RefName & "-" & dummy
  627. Next
  628. End If
  629. If RefPatternMode = 1 Then
  630. 'Ref Name old method
  631. RefName = RefID1
  632. RefList = ""
  633. For i3 = 1 To 100
  634. dummy = Trim(Cmd.GetTextEx(DATUM_ID, i3, "SEG=" & i4))
  635. If dummy = "" Then Exit For
  636. RefList = RefList & dummy & " - "
  637. Next
  638. If (RefList <> "") Then
  639. RefList = " (" & Left(RefList, Len(RefList) - 3) & ")"
  640. End If
  641. RefName = RefName & RefList
  642. End If
  643.  
  644. ' GDT - TP
  645. If Cmd.GetTextEx(SEGMENT_TOGGLE, i4, "SEG=" & i4) = "" Then GoTo 3002
  646. Mea = Format(CDbl(Cmd.GetFieldValueEx(DIM_DEVIATION, ptr, "SEG=" & i4)), "0.000000")
  647. UT = Format(CDbl(Cmd.GetFieldValueEx(FORM_TOLERANCE, i4, "SEG=" & i4)), "0.000000")
  648. myBonus = Format(CDbl(Cmd.GetFieldValueEx(DIM_BONUS, ptr, "SEG=" & i4)), "0.000000")
  649. OUTName = FName
  650. If i2 > 1 Then OUTName = FName & "_" & i2 - 1
  651. sDimAxis = Cmd.GetFieldValueEx(GDT_SYMBOL, ptr, "SEG=" & i4)
  652. ' Segments handling
  653. If i4 = 2 Then OUTName = OUTName & "_L"
  654. ' Nodes
  655. ret = IncrementTPNodes(OUTName, True, False)
  656. TPNodeOut = TPNode
  657. TPNodeRefOut = TPNodeRef
  658. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, "0", Mea, UT + myBonus, myBonus, "0", FCFType, AssignCriticity(), DimComment, RepMode, TPNodeOut, TPNodeRefOut)
  659. i3 = i3 + 1
  660. ' Axes (always only 6, so I can use (ptr-1)*6 + i5)
  661. For i5 = 1 To 6
  662. ptrLine1 = i5 + (ptr - 1) * 6
  663. sDimAxis = Cmd.GetTextEx(SUMMARY_AXIS, ptrLine1, "SEG=" & i4)
  664. If sDimAxis = "X" Or sDimAxis = "Y" Or sDimAxis = "Z" Or sDimAxis = "PR" Or sDimAxis = "PA" Then
  665. Nom = Format(CDbl(Cmd.GetFieldValueEx(SUMMARY_NOMINAL, ptrLine1, "SEG=" & i4)), "0.000000")
  666. UT = "0.000000"
  667. LT = "0.000000"
  668. Mea = Format(CDbl(Cmd.GetFieldValueEx(SUMMARY_MEAS, ptrLine1, "SEG=" & i4)), "0.000000")
  669. ' Nodes
  670. ret = IncrementTPNodes(OUTName, False, True)
  671. TPNodeOut = TPNode
  672. TPNodeRefOut = TPNodeRef
  673. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, Nom, Mea, UT, "0", LT, FCFType, AssignCriticity(), DimComment, RepMode, TPNodeOut, TPNodeRefOut)
  674. i3 = i3 + 1
  675. End If
  676. Next i5
  677. ' Sizes goes out only For the first segment
  678. If i4 = 1 Then
  679. ' Global size
  680. If (Cmd.GetText(USE_SIZE, 1) <> "0") Then
  681. Nom = Format(CDbl(Cmd.GetFieldValueEx(SIZE_NOMINAL, ptr, "SIZE")), "0.000000")
  682. UT = Format(CDbl(Cmd.GetFieldValueEx(UPPER_TOLERANCE, ptr, "SIZE")), "0.000000")
  683. LT = Format(CDbl(Cmd.GetFieldValueEx(LOWER_TOLERANCE, ptr, "SIZE"))*TolsSign, "0.000000")
  684. Mea = Format(CDbl(Cmd.GetFieldValueEx(UPPER_SIZE, ptr, "SIZE")), "0.000000")
  685. sDimAxis = "DF"
  686. If SplitTPAndSize=0 Then
  687. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, Nom, Mea, UT, "0", LT, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  688. End If
  689. If SplitTPAndSize=1 Then
  690. ret = AddDim(RefID1, RefName, sDimAxis, CommandType, Nom, Mea, UT, "0", LT, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  691. End If
  692. i3 = i3 + 1
  693. End If
  694. ' Local size
  695. If (Cmd.GetText(USE_SIZE, 2) <> "0") Then
  696. 'Nom = Format(CDbl(Cmd.GetFieldValueEx(SIZE_NOMINAL, ptr, "SIZE")), "0.000000")
  697. 'UT = Format(CDbl(Cmd.GetFieldValueEx(UPPER_TOLERANCE, ptr,"SIZE")), "0.000000")
  698. 'LT = Format(CDbl(Cmd.GetFieldValueEx(LOWER_TOLERANCE, ptr,"SIZE"))*TolsSign, "0.000000")
  699. Mea = Format(CDbl(Cmd.GetFieldValueEx(LOWER_SIZE, ptr, "SIZE")), "0.000000")
  700. sDimAxis = "DF_Local"
  701. If SplitTPAndSize=0 Then
  702. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, Nom, Mea, UT, "0", LT, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  703. Else
  704. ret = AddDim(RefID1, RefName, sDimAxis, CommandType, Nom, Mea, UT, "0", LT, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  705. End If
  706. i3 = i3 + 1
  707. End If
  708. ' Datum size - NA here?
  709. If (Cmd.GetTextEx(SHOW_OPTIONS, 0, "DATUMSIZE") = "YES") Then
  710. Nom = Format(CDbl(Cmd.GetFieldValueEx(DATUM_FOS_NOMINAL, ptr, "DATUMSIZE")), "0.000000")
  711. UT = Format(CDbl(Cmd.GetFieldValueEx(DATUM_FOS_PLUSTOL, ptr, "DATUMSIZE")), "0.000000")
  712. LT = Format(CDbl(Cmd.GetFieldValueEx(DATUM_FOS_MINUSTOL, ptr, "DATUMSIZE"))*TolsSign, "0.000000")
  713. Mea = Format(CDbl(Cmd.GetFieldValueEx(DATUM_FOS_MEAS, ptr, "DATUMSIZE")), "0.000000")
  714. sDimAxis = "Size_Datum"
  715. If SplitTPAndSize=0 Then
  716. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, Nom, Mea, UT, "0", LT, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  717. End If
  718. If SplitTPAndSize=1 Then
  719. ret = AddDim(RefID1, RefName, sDimAxis, CommandType, Nom, Mea, UT, "0", LT, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  720. End If
  721. i3 = i3 + 1
  722. End If
  723.  
  724. End If
  725.  
  726.  
  727. Next i4
  728. 3002:
  729. ' Reset the criticity counter If Next is To Do
  730. If Cmd.GetText(REF_ID, i2 + 1) <> "" Then
  731. iSelUsed = iSelUsed - i3
  732. i3 = 0
  733. End If
  734. Next i2
  735. 2002:
  736. End If
  737.  
  738.  
  739. End If
  740.  
  741. ' XACT features present up To 2020R1 only!
  742. If CommandType = 184 Then
  743. TPNodeOut = 0
  744. TPNodeRefOut = 0
  745.  
  746. FName = Cmd.ID
  747. RepMode = Cmd.GetToggleValue(OUTPUT_TYPE, 0)
  748. FCFType = Cmd.getToggleValue(GDT_SYMBOL, 0)
  749.  
  750. WriteLog "C:\hexagon\flexreport2\pcdimp.txt", FName, False
  751.  
  752. ' Division On DATUMS, SIZES, PER_UNIT, COMPOSITE, GROUP
  753. ' ========= PERP, PARL (DATUMS=1, SIZES=1, PER_UNIT=0, COMPOSITE=0, GROUP=1) ===========
  754. If FCFType = 11 Or FCFType = 12 Then
  755. ' Dim axis
  756. sDimAxis = Cmd.GetFieldValue(GDT_SYMBOL, 0)
  757. ptr = 0
  758. For i2 = 1 To 1000
  759. ' Ref Name
  760. RefName = Trim(Cmd.GetText(REF_ID, i2))
  761. If RefName = "" Then GoTo 1011
  762. If RefPatternMode = 0 Then
  763. For i3 = 1 To 100
  764. If Cmd.GetText(DIM_RPT_DATUM, i3) = "" Then Exit For
  765. RefName = RefName & "-" & Trim(Cmd.GetText(DIM_RPT_DATUM, i3))
  766. Next
  767. End If
  768. If RefPatternMode = 1 Then
  769. 'Ref Name old method
  770. RefList = ""
  771. For i3 = 1 To 100
  772. dummy = Cmd.GetText(DIM_RPT_DATUM, i3)
  773. If dummy = "" Then Exit For
  774. RefList = RefList & dummy & " - "
  775. Next
  776. If (RefList <> "") Then
  777. RefList = " (" & Left(RefList, Len(RefList) - 3) & ")"
  778. End If
  779. RefName = RefName & RefList
  780. End If
  781.  
  782. ptr = ptr + 1
  783. Mea = Format(CDbl(Cmd.GetFieldValue(LINE2_MEAS, ptr)), "0.000000")
  784. UT = Format(CDbl(Cmd.GetFieldValue(LINE2_PLUSTOL, ptr)), "0.000000")
  785. myBonus = Format(CDbl(Cmd.GetFieldValue(LINE2_BONUS, ptr)), "0.000000")
  786. OUTName = FName
  787. If i2 > 1 Then OUTName = FName & "_" & i2 - 1
  788. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, "0", Mea, UT + myBonus, myBonus, "0", FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  789. ' Reset the criticity counter If Next is To Do
  790. If Cmd.GetText(REF_ID, i2 + 1) <> "" Then iSelUsed = iSelUsed - 1
  791. ' Check If the dimension is To be Output As DF axis too
  792. If Cmd.GetText(LINE1_FEATNAME, i2) <> "" Then
  793. Mea = Format(CDbl(Cmd.GetFieldValue(LINE1_MEAS, ptr)), "0.000000")
  794. UT = Format(CDbl(Cmd.GetFieldValue(LINE1_PLUSTOL, ptr)), "0.000000")
  795. LT = Format(CDbl(Cmd.GetFieldValue(LINE1_MINUSTOL, ptr)), "0.000000")
  796. Nom = Format(CDbl(Cmd.GetFieldValue(LINE1_NOMINAL, ptr)), "0.000000")
  797. MinMea = Format(CDbl(Cmd.GetFieldValue(LINE1_MIN, ptr)), "0.000000")
  798. MaxMea = Format(CDbl(Cmd.GetFieldValue(LINE1_MAX, ptr)), "0.000000")
  799. OUTName = FName
  800. If i2 > 1 Then OUTName = FName & "_" & i2 - 1
  801. ret = AddDim(OUTName, RefName, "DF", CommandType, Nom, Mea, UT, "0", LT, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  802. If EnableMinMax Then
  803. If UseK2005forMinMax= False Then iSelUsed = iSelUsed - 1
  804. ret = AddDim(OUTName, RefName, "DF-MAX", CommandType, "0", MaxMea, UT, "0", LT, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  805. If UseK2005forMinMax= False Then iSelUsed = iSelUsed - 1
  806. ret = AddDim(OUTName, RefName, "DF-MIN", CommandType, "0", MinMea, UT, "0", LT, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  807. End If
  808. ' Reset the criticity counter If Next is To Do
  809. If Cmd.GetText(LINE1_FEATNAME, i2 + 1) <> "" Then iSelUsed = iSelUsed - 1
  810. End If
  811. ' Reset the criticity counter If Next is To Do
  812. If Cmd.GetText(REF_ID, i2 + 1) <> "" Then iSelUsed = iSelUsed - 1
  813. Next i2
  814. 1011:
  815. End If
  816. ' ========= CONC, COAX , RUNOUTS (DATUMS=1, SIZES=0, PER_UNIT=0, COMPOSITE=0, GROUP=1) ===========
  817. If FCFType = 5 Or FCFType = 6 Or FCFType = 13 Or FCFType = 14 Or FCFType = 17 Or FCFType = 18 Then
  818. ' Dim axis
  819. sDimAxis = Cmd.GetFieldValue(GDT_SYMBOL, 0)
  820. ptr = 0
  821. For i2 = 1 To 1000
  822. RefName = Trim(Cmd.GetText(REF_ID, i2))
  823. If RefName = "" Then GoTo 1005
  824. If RefPatternMode = 0 Then
  825. For i3 = 1 To 100
  826. If Cmd.GetText(DIM_RPT_DATUM, i3) = "" Then Exit For
  827. RefName = RefName & "-" & Trim(Cmd.GetText(DIM_RPT_DATUM, i3))
  828. Next
  829. End If
  830. If RefPatternMode = 1 Then
  831. 'Ref Name old method
  832. RefList = ""
  833. For i3 = 1 To 100
  834. dummy = Cmd.GetText(DIM_RPT_DATUM, i3)
  835. If dummy = "" Then Exit For
  836. RefList = RefList & dummy & " - "
  837. Next
  838. If (RefList <> "") Then
  839. RefList = " (" & Left(RefList, Len(RefList) - 3) & ")"
  840. End If
  841. RefName = RefName & RefList
  842. End If
  843.  
  844. ptr = ptr + 1
  845. Mea = Format(CDbl(Cmd.GetFieldValue(LINE2_MEAS, ptr)), "0.000000")
  846. UT = Format(CDbl(Cmd.GetFieldValue(LINE2_PLUSTOL, ptr)), "0.000000")
  847. OUTName = FName
  848. If i2 > 1 Then OUTName = FName & "_" & i2 - 1
  849. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, "0", Mea, UT, "0", "0", FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  850. ' Reset the criticity counter If Next is To Do
  851. If Cmd.GetText(REF_ID, i2 + 1) <> "" Then iSelUsed = iSelUsed - 1
  852. Next i2
  853. 1005:
  854. End If
  855. ' ========= CIRTY, CYLTY (DATUMS=0, SIZES=0, PER_UNIT=0, COMPOSITE=0, GROUP=1) ===========
  856. If FCFType = 7 Or FCFType = 8 Then
  857. ' Dim axis
  858. sDimAxis = Cmd.GetFieldValue(GDT_SYMBOL, 0)
  859. ptr = 0
  860. For i2 = 1 To 1000
  861. RefName = Trim(Cmd.GetText(REF_ID, i2))
  862. If RefName = "" Then GoTo 1007
  863. If (RefPatternMode = 1) Then
  864. RefName = RefName & " (" & RefName & ")"
  865. End If
  866. ptr = ptr + 1
  867. Mea = Format(CDbl(Cmd.GetFieldValue(LINE2_MEAS, ptr)), "0.000000")
  868. UT = Format(CDbl(Cmd.GetFieldValue(LINE2_PLUSTOL, ptr)), "0.000000")
  869. OUTName = FName
  870. If i2 > 1 Then OUTName = FName & "_" & i2 - 1
  871. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, "0", Mea, UT, "0", "0", FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  872. ' Reset the criticity counter If Next is To Do
  873. If Cmd.GetText(REF_ID, i2 + 1) <> "" Then iSelUsed = iSelUsed - 1
  874. Next i2
  875. 1007:
  876. End If
  877. ' ========= STRA, FLAT (DATUMS=1, SIZES=1, PER_UNIT=1, COMPOSITE=0, GROUP=1) ====
  878. If FCFType = 9 Or FCFType = 10 Then
  879. ' Dim axis
  880. sDimAxis = Cmd.GetFieldValue(GDT_SYMBOL, 0)
  881. ' check If per unit is On
  882. If Cmd.GetToggleValue(COMPOSITE, 0) = 2 Then bComposite = True Else bComposite = False
  883. ptr = 0
  884. For i2 = 1 To 1000
  885. RefName = Trim(Cmd.GetText(REF_ID, i2))
  886. If RefName = "" Then GoTo 1009
  887. If (RefPatternMode = 1) Then
  888. RefName = RefName & " (" & RefName & ")"
  889. End If
  890. ' Read main dimension
  891. ptr = ptr + 1
  892. Mea = Format(CDbl(Cmd.GetFieldValue(LINE2_MEAS, ptr)), "0.000000")
  893. UT = Format(CDbl(Cmd.GetFieldValue(LINE2_PLUSTOL, ptr)), "0.000000")
  894. OUTName = FName
  895. If i2 > 1 Then OUTName = FName & "_" & i2 - 1
  896. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, "0", Mea, UT, "0", "0", FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  897. If bComposite Then ' Read per unit dimension
  898. ptr = ptr + 1
  899. Mea = Format(CDbl(Cmd.GetFieldValue(LINE2_MEAS, ptr)), "0.000000")
  900. UT = Format(CDbl(Cmd.GetFieldValue(LINE2_PLUSTOL, ptr)), "0.000000")
  901. OUTName = FName
  902. If i2 > 1 Then OUTName = FName & "_" & i2 - 1
  903. ret = AddDim(OUTName, RefName & " " & Cmd.GetText(PERUNIT_LENGTH, 0) & "x" & Cmd.GetText(PERUNIT_WIDTH, 0), sDimAxis & " PER UNIT", CommandType, "0", Mea, UT, "0", "0", FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  904. End If
  905. ' Reset the criticity counter If Next is To Do
  906. If Cmd.GetText(REF_ID, i2 + 1) <> "" And bComposite = False Then iSelUsed = iSelUsed - 1
  907. If Cmd.GetText(REF_ID, i2 + 1) <> "" And bComposite = True Then iSelUsed = iSelUsed - 2
  908. Next i2
  909. 1009:
  910. End If
  911. ' ====== PROF, SURF (DATUMS=1, SIZES=0, PER_UNIT=1, COMPOSITE=1, GROUP=0)
  912. If FCFType = 15 Or FCFType = 16 Then
  913. sDimAxis = Cmd.GetFieldValue(GDT_SYMBOL, 0)
  914. ' check If composite is On
  915. If Cmd.GetToggleValue(COMPOSITE, 0) = 2 Then bComposite = True Else bComposite = False
  916. sPerUnit = Cmd.GetText(PERUNIT_LENGTH, 0)
  917. ptr = 0
  918. If bComposite Then ' composite Or per unite
  919. If sPerUnit <> "" Then ' per unit (no datums)
  920. ' Create RefName
  921. RefName = ""
  922. For i2 = 1 To 1000
  923. If Cmd.GetText(REF_ID, i2) = "" Then Exit For
  924. RefName = RefName & Trim(Cmd.GetText(REF_ID, i2)) & ","
  925. Next
  926. RefName = Left(RefName, Len(RefName) - 1)
  927. ptr = ptr + 1
  928. Mea = Format(CDbl(Cmd.GetFieldValue(LINE2_MEAS, ptr)), "0.000000")
  929. MaxMea = Format(CDbl(Cmd.GetFieldValue(LINE2_MAX, ptr)), "0.000000")
  930. MinMea = Format(CDbl(Cmd.GetFieldValue(LINE2_MIN, ptr)), "0.000000")
  931. UT = Format(CDbl(Cmd.GetFieldValue(LINE2_PLUSTOL, ptr)), "0.000000")
  932. OUTName = FName
  933. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, "0", Mea, UT, "0", "0", FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  934. If EnableMinMax = True Then
  935. if UseK2005forMinMax= False Then iSelUsed = iSelUsed - 1
  936. ret = AddDim(OUTName, RefName, sDimAxis & "-MAX", CommandType, "0", MaxMea, UT / 2, "0", -UT / 2, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  937. if UseK2005forMinMax= False Then iSelUsed = iSelUsed - 1
  938. ret = AddDim(OUTName, RefName, sDimAxis & "-MIN", CommandType, "0", MinMea, UT / 2, "0", -UT / 2, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  939. End If
  940. ptr = ptr + 1
  941. Mea = Format(CDbl(Cmd.GetFieldValue(LINE2_MEAS, ptr)), "0.000000")
  942. MaxMea = Format(CDbl(Cmd.GetFieldValue(LINE2_MAX, ptr)), "0.000000")
  943. MinMea = Format(CDbl(Cmd.GetFieldValue(LINE2_MIN, ptr)), "0.000000")
  944. UT = Format(CDbl(Cmd.GetFieldValue(LINE2_PLUSTOL, ptr)), "0.000000")
  945. OUTName = FName
  946. ret = AddDim(OUTName, RefName & " /" & Cmd.GetText(PERUNIT_LENGTH, 0), sDimAxis & " PER UNIT", CommandType, "0", Mea, UT, "0", "0", FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  947. If EnableMinMax = True Then
  948. if UseK2005forMinMax= False Then iSelUsed = iSelUsed - 1
  949. ret = AddDim(OUTName, RefName & " /" & Cmd.GetText(PERUNIT_LENGTH, 0), sDimAxis & "-MAX PER UNIT", CommandType, "0", Mea, UT / 2, "0", -UT / 2, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  950. if UseK2005forMinMax= False Then iSelUsed = iSelUsed - 1
  951. ret = AddDim(OUTName, RefName & " /" & Cmd.GetText(PERUNIT_LENGTH, 0), sDimAxis & "-MIN PER UNIT", CommandType, "0", Mea, UT / 2, "0", -UT / 2, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  952. End If
  953. Else ' composite (datums)
  954. RefName = ""
  955. For i2 = 1 To 1000
  956. If Cmd.GetText(REF_ID, i2) = "" Then Exit For
  957. RefName = RefName & Trim(Cmd.GetText(REF_ID, i2)) & ","
  958. Next
  959.  
  960. RefName = Left(RefName, Len(RefName) - 1)
  961. If RefPatternMode = 0 Then
  962. For i3 = 1 To 100
  963. If Cmd.GetText(DIM_RPT_DATUM, i3) = "" Then Exit For
  964. RefName = RefName & "-" & Trim(Cmd.GetText(DIM_RPT_DATUM, i3))
  965. Next
  966. End If
  967. If RefPatternMode = 1 Then
  968. 'Ref Name old method
  969. RefList = ""
  970. For i3 = 1 To 100
  971. dummy = Trim(Cmd.GetText(DIM_RPT_DATUM, i3))
  972. If dummy = "" Then Exit For
  973. RefList = RefList & dummy & " - "
  974. Next
  975. If (RefList <> "") Then
  976. RefList = " (" & Left(RefList, Len(RefList) - 3) & ")"
  977. End If
  978. RefName = RefName & RefList
  979. End If
  980.  
  981. ptr = ptr + 1
  982. Mea = Format(CDbl(Cmd.GetFieldValue(LINE2_MEAS, ptr)), "0.000000")
  983. MaxMea = Format(CDbl(Cmd.GetFieldValue(LINE2_MAX, ptr)), "0.000000")
  984. MinMea = Format(CDbl(Cmd.GetFieldValue(LINE2_MIN, ptr)), "0.000000")
  985. UT = Format(CDbl(Cmd.GetFieldValue(LINE2_PLUSTOL, ptr)), "0.000000")
  986. OUTName = FName
  987. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, "0", Mea, UT, "0", "0", FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  988. If EnableMinMax = True Then
  989. if UseK2005forMinMax= False Then iSelUsed = iSelUsed - 1
  990. ret = AddDim(OUTName, RefName, sDimAxis & "-MAX", CommandType, "0", MaxMea, UT / 2, "0", -UT / 2, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  991. if UseK2005forMinMax= False Then iSelUsed = iSelUsed - 1
  992. ret = AddDim(OUTName, RefName, sDimAxis & "-MIN", CommandType, "0", MinMea, UT / 2, "0", -UT / 2, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  993. End If
  994. Mea = Format(CDbl(Cmd.GetFieldValue(LINE3_MEAS, ptr)), "0.000000")
  995. MaxMea = Format(CDbl(Cmd.GetFieldValue(LINE3_MAX, ptr)), "0.000000")
  996. MinMea = Format(CDbl(Cmd.GetFieldValue(LINE3_MIN, ptr)), "0.000000")
  997. UT = Format(CDbl(Cmd.GetFieldValue(LINE3_PLUSTOL, ptr)), "0.000000")
  998. OUTName = FName
  999. ret = AddDim(OUTName, RefName, sDimAxis & "-COMP", CommandType, "0", Mea, UT, "0", "0", FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  1000. If EnableMinMax = True Then
  1001. if UseK2005forMinMax= False Then iSelUsed = iSelUsed - 1
  1002. ret = AddDim(OUTName, RefName, sDimAxis & "-MAX COMP", CommandType, "0", MaxMea, UT / 2, "0", -UT / 2, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  1003. if UseK2005forMinMax= False Then iSelUsed = iSelUsed - 1
  1004. ret = AddDim(OUTName, RefName, sDimAxis & "-MAX COMP", CommandType, "0", MinMea, UT / 2, "0", -UT / 2, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  1005. End If
  1006. End If
  1007. Else
  1008. RefName = ""
  1009. For i2 = 1 To 1000
  1010. If Cmd.GetText(REF_ID, i2) = "" Then Exit For
  1011. RefName = RefName & Trim(Cmd.GetText(REF_ID, i2)) & ","
  1012. Next
  1013. RefName = Left(RefName, Len(RefName) - 1)
  1014. If RefPatternMode = 0 Then
  1015. For i3 = 1 To 100
  1016. If Cmd.GetText(DIM_RPT_DATUM, i3) = "" Then Exit For
  1017. RefName = RefName & "-" & Trim(Cmd.GetText(DIM_RPT_DATUM, i3))
  1018. Next
  1019. End If
  1020. If RefPatternMode = 1 Then
  1021. 'Ref Name old method
  1022. RefList = ""
  1023. For i3 = 1 To 100
  1024. dummy = Cmd.GetText(DIM_RPT_DATUM, i3)
  1025. If dummy = "" Then Exit For
  1026. RefList = RefList & dummy & " - "
  1027. Next
  1028. If (RefList <> "") Then
  1029. RefList = " (" & Left(RefList, Len(RefList) - 3) & ")"
  1030. End If
  1031. RefName = RefName & RefList
  1032. End If
  1033.  
  1034. ptr = ptr + 1
  1035. Mea = Format(CDbl(Cmd.GetFieldValue(LINE2_MEAS, ptr)), "0.000000")
  1036. UT = Format(CDbl(Cmd.GetFieldValue(LINE2_PLUSTOL, ptr)), "0.000000")
  1037. MaxMea = Format(CDbl(Cmd.GetFieldValue(LINE2_MAX, ptr)), "0.000000")
  1038. MinMea = Format(CDbl(Cmd.GetFieldValue(LINE2_MIN, ptr)), "0.000000")
  1039. OUTName = FName
  1040. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, "0", Mea, UT, "0", "0", FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  1041. If EnableMinMax = True Then
  1042. if UseK2005forMinMax= False Then iSelUsed = iSelUsed - 1
  1043. ret = AddDim(OUTName, RefName, sDimAxis & "-MAX", CommandType, "0", MaxMea, UT / 2, "0", -UT / 2, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  1044. if UseK2005forMinMax= False Then iSelUsed = iSelUsed - 1
  1045. ret = AddDim(OUTName, RefName, sDimAxis & "-MIN", CommandType, "0", MinMea, UT / 2, "0", -UT / 2, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  1046. End If
  1047. End If
  1048. End If
  1049. ' ========= TP (DATUMS=1, SIZES=1, PER_UNIT=1, COMPOSITE=1, GROUP=1) ===========
  1050. If FCFType = 2 Then
  1051. ptrSummary = 0
  1052. ptrSummary2 = 0
  1053. ptrLine1 = 0
  1054. ptrLine2 = 0
  1055. ptrLine3 = 0
  1056. RefID1 = Cmd.GetText(REF_ID, 1)
  1057. ' Summary axes - how many axes In Any group but Not For "set"
  1058. ' first avoid the possibly existing "set", pointing To first feature (sometimes the dummy (On culinders may have additional String, that why SubString)
  1059. For i2 = 1 To 1000
  1060. dummy = Trim(Cmd.GetFieldValue(SUMMARY_FEAT, i2))
  1061. dummy = Right(dummy, Len(dummy) - InStr(1, dummy, ":"))
  1062. If Len(dummy) >= Len(RefID1) Then
  1063. If Left(dummy, Len(RefID1)) = RefID1 Then Exit For
  1064. 'If dummy = RefID1 Then Exit For
  1065. End If
  1066. Next
  1067. ' record the starting points For the coordinates In the summary group
  1068. ptrSummary = i2 - 1
  1069. ' Now count the axes staring from element
  1070. iNumRowsAx = 0
  1071. For i3 = i2 To 1000
  1072. If i3 = i2 Then
  1073. dummy = Cmd.GetText(SUMMARY_AXIS, i3)
  1074. iNumRowsAx = iNumRowsAx + 1
  1075. Else
  1076. If Cmd.GetText(SUMMARY_AXIS, i3) = "" Or Cmd.GetText(SUMMARY_AXIS, i3) = dummy Then Exit For
  1077. iNumRowsAx = iNumRowsAx + 1
  1078. End If
  1079. Next
  1080. ' check If composite is On Or If we have 2 segments
  1081. If Cmd.GetToggleValue(COMPOSITE, 0) = 2 Then bComposite = True Else bComposite = False
  1082. If Cmd.GetText(GDT_SYMBOL2, 0) <> "" Then b2Segments = True Else b2Segments = False
  1083. ' find where the scond summary axes group starts
  1084. If bComposite Or b2Segments Then
  1085. For i2 = ptrSummary + 2 To 1000
  1086. dummy = Trim(Cmd.GetFieldValue(SUMMARY_FEAT, i2))
  1087. dummy = Right(dummy, Len(dummy) - InStr(1, dummy, ":"))
  1088. If dummy = RefID1 Then Exit For
  1089. Next
  1090. ' record the starting points For the coordinates In the summary group
  1091. ptrSummary2 = i2 - 1
  1092. End If
  1093. ' No start collecting
  1094. For i2 = 1 To 1000
  1095. If Cmd.GetText(REF_ID, i2) = "" Then GoTo 1002
  1096. ' primary dimension
  1097. OUTName = FName
  1098. If i2 > 1 Then OUTName = OUTName & "_" & i2 - 1
  1099. ' Output axes primary
  1100. RefName = Trim(Cmd.GetText(REF_ID, i2))
  1101. If RefPatternMode = 0 Then
  1102. For i3 = 1 To 100
  1103. If Cmd.GetText(DIM_RPT_DATUM, i3) = "" Then Exit For
  1104. RefName = RefName & "-" & Trim(Cmd.GetText(DIM_RPT_DATUM, i3))
  1105. Next
  1106. End If
  1107. If RefPatternMode = 1 Then
  1108. 'Ref Name old method
  1109. RefList = ""
  1110. For i3 = 1 To 100
  1111. dummy = Trim(Cmd.GetText(DIM_RPT_DATUM, i3))
  1112. If dummy = "" Then Exit For
  1113. RefList = RefList & dummy & " - "
  1114. Next
  1115. If (RefList <> "") Then
  1116. RefList = " (" & Left(RefList, Len(RefList) - 3) & ")"
  1117. End If
  1118. RefName = RefName & RefList
  1119. End If
  1120. ' Extract primary TP
  1121. sDimAxis = Cmd.GetFieldValue(GDT_SYMBOL, 0)
  1122. ptrLine2 = ptrLine2 + 1
  1123. Mea = Format(CDbl(Cmd.GetFieldValue(LINE2_MEAS, ptrLine2)), "0.000000")
  1124. UT = Format(CDbl(Cmd.GetFieldValue(LINE2_PLUSTOL, ptrLine2)), "0.000000")
  1125. myBonus = Format(CDbl(Cmd.GetFieldValue(LINE2_BONUS, ptrLine2)), "0.000000")
  1126. ' Nodes
  1127. ret = IncrementTPNodes(OUTName, True, False)
  1128. TPNodeOut = TPNode
  1129. TPNodeRefOut = TPNodeRef
  1130. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, "0", Mea, UT + myBonus, myBonus, "0", FCFType, AssignCriticity(), DimComment, RepMode, TPNodeOut, TPNodeRefOut)
  1131. CritCount = CritCount + 1
  1132. ' Extract Axes
  1133. For i3 = 1 To iNumRowsAx
  1134. ptrSummary = ptrSummary + 1
  1135. Nom = Format(CDbl(Cmd.GetFieldValue(SUMMARY_NOMINAL, ptrSummary)), "0.000000")
  1136. Mea = Format(CDbl(Cmd.GetFieldValue(SUMMARY_MEAS, ptrSummary)), "0.000000")
  1137. sDimAxis = Cmd.GetText(SUMMARY_AXIS, ptrSummary)
  1138. ' Nodes
  1139. ret = IncrementTPNodes(OUTName, False, True)
  1140. TPNodeOut = TPNode
  1141. TPNodeRefOut = TPNodeRef
  1142. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, Nom, Mea, "0", "0", "0", FCFType, AssignCriticity(), DimComment, RepMode, TPNodeOut, TPNodeRefOut)
  1143. CritCount = CritCount + 1
  1144. Next
  1145. ' Extract size primary If there is Any
  1146. If Cmd.GetText(LINE1_FEATNAME, i2) <> "" Then
  1147. ptrLine1 = ptrLine1 + 1
  1148. Nom = Format(CDbl(Cmd.GetFieldValue(LINE1_NOMINAL, ptrLine1)), "0.000000")
  1149. Mea = Format(CDbl(Cmd.GetFieldValue(LINE1_MEAS, ptrLine1)), "0.000000")
  1150. UT = Format(CDbl(Cmd.GetFieldValue(LINE1_PLUSTOL, ptrLine1)), "0.000000")
  1151. LT = Format(CDbl(Cmd.GetFieldValue(LINE1_MINUSTOL, ptrLine1))*TolsSign, "0.000000")
  1152. sDimAxis = "DF"
  1153. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, Nom, Mea, UT, "0", LT, FCFType, AssignCriticity(), DimComment, RepMode, 0, 0)
  1154. CritCount = CritCount + 1
  1155. End If
  1156. ' secondary dimension composite
  1157. If bComposite Then
  1158. OUTName = FName & "_C"
  1159. RefName = Trim(Cmd.GetText(REF_ID, i2))
  1160.  
  1161. If RefPatternMode = 0 Then
  1162. For i3 = 1 To 100
  1163. If Cmd.GetText(DATUM2, i3) = "" Then Exit For
  1164. RefName = RefName & "-" & Trim(Cmd.GetText(DATUM2, i3))
  1165. Next
  1166. End If
  1167. If RefPatternMode = 1 Then
  1168. 'Ref Name old method
  1169. RefList = ""
  1170. For i3 = 1 To 100
  1171. dummy = Trim(Cmd.GetText(DIM_RPT_DATUM, i3))
  1172. If dummy = "" Then Exit For
  1173. RefList = RefList & dummy & " - "
  1174. Next
  1175. If (RefList <> "") Then
  1176. RefList = " (" & Left(RefList, Len(RefList) - 3) & ")"
  1177. End If
  1178. RefName = RefName & RefList
  1179. End If
  1180. If i2 > 1 Then OUTName = OUTName & "_" & i2 - 1
  1181. ' Extract TP secondary
  1182. ptrLine3 = ptrLine3 + 1
  1183. sDimAxis = Cmd.GetFieldValue(GDT_SYMBOL, 0)
  1184. Mea = Format(CDbl(Cmd.GetFieldValue(LINE3_MEAS, ptrLine3)), "0.000000")
  1185. UT = Format(CDbl(Cmd.GetFieldValue(LINE3_PLUSTOL, ptrLine3)), "0.000000")
  1186. myBonus = Format(CDbl(Cmd.GetFieldValue(LINE3_BONUS, ptrLine3)), "0.000000")
  1187. ' Nodes
  1188. ret = IncrementTPNodes(OUTName, True, False)
  1189. TPNodeOut = TPNode
  1190. TPNodeRefOut = TPNodeRef
  1191. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, "0", Mea, UT + myBonus, myBonus, "0", FCFType, AssignCriticity(), DimComment, RepMode, TPNodeOut, TPNodeRefOut)
  1192. CritCount = CritCount + 1
  1193. ' Output axes secondary
  1194. For i3 = 1 To iNumRowsAx
  1195. ptrSummary2 = ptrSummary2 + 1
  1196. Nom = Format(CDbl(Cmd.GetFieldValue(SUMMARY_NOMINAL, ptrSummary2)), "0.000000")
  1197. Mea = Format(CDbl(Cmd.GetFieldValue(SUMMARY_MEAS, ptrSummary2)), "0.000000")
  1198. sDimAxis = Cmd.GetText(SUMMARY_AXIS, ptrSummary2)
  1199. ' Nodes
  1200. ret = IncrementTPNodes(OUTName, False, True)
  1201. TPNodeOut = TPNode
  1202. TPNodeRefOut = TPNodeRef
  1203. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, Nom, Mea, "0", "0", "0", FCFType, AssignCriticity(), DimComment, RepMode, TPNodeOut, TPNodeRefOut)
  1204. CritCount = CritCount + 1
  1205. Next
  1206. End If
  1207. ' secondary dimension lower segments
  1208. If b2Segments = True And bComposite = False Then
  1209. OUTName = FName & "_L"
  1210. RefName = Trim(Cmd.GetText(REF_ID, i2))
  1211. If RefPatternMode = 0 Then
  1212. For i3 = 1 To 100
  1213. If Cmd.GetText(DATUM2, i3) = "" Then Exit For
  1214. RefName = RefName & "-" & Cmd.GetText(DATUM2, i3)
  1215. Next
  1216. End If
  1217. If RefPatternMode = 1 Then
  1218. 'Ref Name old method
  1219. RefList = ""
  1220. For i3 = 1 To 100
  1221. dummy = Trim(Cmd.GetText(DIM_RPT_DATUM, i3))
  1222. If dummy = "" Then Exit For
  1223. RefList = RefList & dummy & " - "
  1224. Next
  1225. If (RefList <> "") Then
  1226. RefList = " (" & Left(RefList, Len(RefList) - 3) & ")"
  1227. End If
  1228. RefName = RefName & RefList
  1229. End If
  1230.  
  1231. If i2 > 1 Then OUTName = OUTName & "_" & i2 - 1
  1232. ' Extract TP lower
  1233. ptrLine3 = ptrLine3 + 1
  1234. sDimAxis = Cmd.GetFieldValue(GDT_SYMBOL, 0)
  1235. Mea = Format(CDbl(Cmd.GetFieldValue(LINE3_MEAS, ptrLine3)), "0.000000")
  1236. UT = Format(CDbl(Cmd.GetFieldValue(LINE3_PLUSTOL, ptrLine3)), "0.000000")
  1237. myBonus = Format(CDbl(Cmd.GetFieldValue(LINE3_BONUS, ptrLine3)), "0.000000")
  1238. ' Nodes
  1239. ret = IncrementTPNodes(OUTName, True, False)
  1240. TPNodeOut = TPNode
  1241. TPNodeRefOut = TPNodeRef
  1242. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, "0", Mea, UT + myBonus, myBonus, "0", FCFType, AssignCriticity(), DimComment, RepMode, TPNodeOut, TPNodeRefOut)
  1243. CritCount = CritCount + 1
  1244. ' Output axes lower
  1245. For i3 = 1 To iNumRowsAx
  1246. ptrSummary2 = ptrSummary2 + 1
  1247. Nom = Format(CDbl(Cmd.GetFieldValue(SUMMARY_NOMINAL, ptrSummary2)), "0.000000")
  1248. Mea = Format(CDbl(Cmd.GetFieldValue(SUMMARY_MEAS, ptrSummary2)), "0.000000")
  1249. sDimAxis = Cmd.GetText(SUMMARY_AXIS, ptrSummary2)
  1250. ' Nodes
  1251. ret = IncrementTPNodes(OUTName, False, True)
  1252. TPNodeOut = TPNode
  1253. TPNodeRefOut = TPNodeRef
  1254. ret = AddDim(OUTName, RefName, sDimAxis, CommandType, Nom, Mea, "0", "0", "0", FCFType, AssignCriticity(), DimComment, RepMode, TPNodeOut, TPNodeRefOut)
  1255. CritCount = CritCount + 1
  1256. Next
  1257. End If
  1258. ' Turn back the criticity counter If Next feature is there
  1259. If Cmd.GetText(REF_ID, i2 + 1) <> "" Then
  1260. For i3 = 1 To CritCount
  1261. iSelUsed = iSelUsed - 1
  1262. Next
  1263. CritCount = 0
  1264. End If
  1265. Next i2
  1266. 1002:
  1267. End If
  1268. End If
  1269. 9191:
  1270. Next i
  1271.  
  1272. TFCont=TFCont+1
  1273. TFName(TFCont)=""
  1274. TFMessage(TFCont)="FileName"
  1275. TFValue(TFCont)=Prg.FullName
  1276.  
  1277. Dim fp As Long
  1278. fp=FreeFile
  1279.  
  1280. Open FileName For Output As #fp
  1281. Print #fp,"#TRACEFIELDS"
  1282. For i=1 To TFCont
  1283. Print #fp,TFName(i) & ";" & TFMessage(i) & ";" & TFValue(i)
  1284. Next i
  1285. Print #fp,"#DIMENSIONS"
  1286. For i=1 To DimCount
  1287. If DimRepMode(i) = 1 or DimRepMode(i) = 3 Then
  1288. If WithNodes Then
  1289. Print #fp,DimNames(i) & ";" & DimAxes(i) & ";" & DimDescrs(i) & ";" & DimNoms(i) & ";" & DimUTs(i) & ";" & DimBonuses(i) & ";" & DimLTs(i) & ";" & DimMeas(i) & ";" & DimPCDCmdType(i) & ";" & DimFCFType(i) & ";" & DimCriticity(i) & ";" & DimComments(i) & ";" & DimRepMode(i) & ";" & DimTPNodes(i) & ";" & DimTPNodeRefs(i)
  1290. Else
  1291. Print #fp,DimNames(i) & ";" & DimAxes(i) & ";" & DimDescrs(i) & ";" & DimNoms(i) & ";" & DimUTs(i) & ";" & DimBonuses(i) & ";" & DimLTs(i) & ";" & DimMeas(i) & ";" & DimPCDCmdType(i) & ";" & DimFCFType(i) & ";" & DimCriticity(i) & ";" & " " & ";" & DimRepMode(i) & ";" & "0" & ";" & "0"
  1292. End If
  1293. End If
  1294. Next i
  1295. Close #fp
  1296. End Sub
  1297.  
  1298. Sub WriteLog(fn As String, Str1 As String, init As Boolean)
  1299. Dim fptr As Long
  1300. fptr=FreeFile
  1301. If init Then
  1302. Open fn For Output As #fptr
  1303. Else
  1304. Open fn For Append As #fptr
  1305. End If
  1306. Print #fptr,Str1
  1307. Close #fptr
  1308. End Sub
  1309.  
  1310.  
  1311. Sub Main (Arg1 As String, Arg2 As String, Arg3 As String, Arg4 As String, Arg5 As String)
  1312. Dim i As Long
  1313. Dim FileName As String
  1314. '---------------------------
  1315. '---- O P T I O N S -------
  1316. '---------------------------
  1317. ' **** How To make pattern of the datums:
  1318. ' RefPatternMode=0 - No brackets
  1319. ' RefPatternMode=1 - With brackets
  1320. RefPatternMode=0
  1321. ' **** Nodes of TP (create Or Not)
  1322. DFQWithNodes=True
  1323. ' **** SplitTPAndSize -
  1324. ' if 0 will keep TP and size in the same dimension, if 1 will spllit in 2 dimensions (default 0)
  1325. SplitTPAndSize=0
  1326. ' **** UseK2005forMinMax -
  1327. ' Allow trace field K2005 to manage separately the MIN/MAX axes (default is False)
  1328. UseK2005forMinMax=True
  1329. '------------------------------------
  1330.  
  1331. FileName = "C:\Hexagon\FlexReport2\FlexReport2.txt"
  1332. ' Second argument - With Or Without Nodes
  1333. CreateFRFile FileName, DFQWithNodes
  1334.  
  1335. If Arg1="DFQ" Then
  1336.  
  1337. If Instr(1,Arg3,",")=0 Then
  1338. Shell "C:\Hexagon\FlexReport2\FlexReport2.exe /DFQ " & chr(34) & "/PATH=" & Arg2 & chr(34) & " " & chr(34) & "/FILE=" & Arg3 & chr(34) & " /CRI=" & Arg4 & " /TUS=" & Arg5
  1339. Else
  1340. Dim fn1 As String, fn2 As String
  1341. fn1= left(Arg3,Instr(1,Arg3,",")-1)
  1342. fn2=right(Arg3,len(Arg3)-Instr(1,Arg3,","))
  1343.  
  1344. Dim path1 As String, path2 As String
  1345. If Instr(1,Arg2,",")=0 Then
  1346. path1=""
  1347. path2=""
  1348. Else
  1349. path1= left(Arg2,Instr(1,Arg2,",")-1)
  1350. path2=right(Arg2,len(Arg2)-Instr(1,Arg2,","))
  1351. End If
  1352. Shell "C:\Hexagon\FlexReport2\FlexReport2.exe /DFQ " & chr(34) & "/PATH=" & path1 & chr(34) & " " & chr(34) & "/FILE=" & fn1 & chr(34)
  1353. Shell "C:\Hexagon\FlexReport2\FlexReport2.exe /DFQ " & chr(34) & "/PATH=" & path2 & chr(34) & " " & chr(34) & "/FILE=" & fn2 & chr(34) & " /CRI=" & Arg4 & " /TUS=" & Arg5
  1354. End If
  1355.  
  1356. End If
  1357. If Arg1="XLS01" Then
  1358. If Arg5="" Then
  1359. Arg5=Prg.Path & Prg.Name
  1360. Arg5=left(Arg5,len(Arg5)-4) & ".Excel01.xml"
  1361. End If
  1362. Shell "C:\Hexagon\FlexReport2\FlexReport2.exe /XLS01 " & chr(34) & "/DST=" & Arg2 & chr(34) & " " & chr(34) & "/SRC=" & Arg3 & chr(34) & " " & chr(34) & "/RUL=" & Arg5 & chr(34)
  1363. End If
  1364. If Arg1="XLS02" Then
  1365. If Arg5="" Then Arg5="0"
  1366. Shell "C:\Hexagon\FlexReport2\FlexReport2.exe /XLS02 " & chr(34) & "/DST=" & Arg2 & chr(34) & " " & chr(34) & "/RUL=" & Arg3 & chr(34) & " /CRI=" & Arg4 & " /TUS=" & Arg5
  1367. End If
  1368. If Arg1="TXT01" Then
  1369. If Arg5="" Then Arg5="0"
  1370. Shell "C:\Hexagon\FlexReport2\FlexReport2.exe /TXT01 " & chr(34) & "/DST=" & Arg2 & chr(34) & " " & chr(34) & "/RUL=" & Arg3 & chr(34) & " /CRI=" & Arg4 & " /TUS=" & Arg5
  1371. End If
  1372. If Arg1="SQL" Then
  1373. Shell "C:\Hexagon\FlexReport2\FlexReport2.exe /SQL"
  1374. End If
  1375. If Arg1="SCR" Then
  1376. Shell "C:\Hexagon\FlexReport2\FlexReport2.exe /SCR " & chr(34) & "/DST=" & Arg2 & chr(34) & " " & chr(34) & "/RUL=" & Arg3 & chr(34) & " /CRI=" & Arg4 & " /TUS=" & Arg5
  1377. End If
  1378. If Arg1="FLR" Then
  1379. Shell "C:\Hexagon\FlexReport2\FlexReport2.exe /FLR " & chr(34) & "/PATH=" & Arg2 & chr(34) & " " & chr(34) & "/FILE=" & Arg3 & chr(34) & " /CRI=" & Arg4 & " /TUS=" & Arg5
  1380. End If
  1381.  
  1382. End Sub
  1383.  
  1384.  
  1385.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement