Guest User

Untitled

a guest
Jul 16th, 2015
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.83 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # mach3 to stepconf
  3. # version 0.9
  4. # author John Thornton
  5. # maximum of 4 axis can be converted
  6.  
  7. # import xml parser minidom:
  8. from xml.dom.minidom import parseString
  9.  
  10. # import sys
  11. import sys
  12. import os
  13. import gtk
  14. from zipfile import ZipFile
  15.  
  16. fcd = gtk.FileChooserDialog("Open...",
  17. None,
  18. gtk.FILE_CHOOSER_ACTION_OPEN,
  19. (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK))
  20. fcd.set_current_folder(os.path.abspath('.'))
  21. response = fcd.run()
  22. if response == gtk.RESPONSE_OK:
  23. file_name = os.path.basename(fcd.get_filename())
  24. machinename = os.path.splitext(file_name)[0]
  25. fcd.destroy()
  26. if response == gtk.RESPONSE_CANCEL:
  27. quit(1)
  28.  
  29. file = open(file_name,'r')
  30. #convert to string:
  31. data = file.read()
  32. #close file because we dont need it anymore:
  33. file.close()
  34. #parse the xml you got from the file
  35. dom = parseString(data)
  36.  
  37. #quit()
  38.  
  39. '''
  40. if (len(sys.argv) > 1):
  41. #open the xml file for reading:
  42. file = open(sys.argv[1],'r')
  43. #convert to string:
  44. data = file.read()
  45. #close file because we dont need it anymore:
  46. file.close()
  47. #parse the xml you got from the file
  48. dom = parseString(data)
  49. else:
  50. # exit program if no file name is passed
  51. sys.exit("Usage is mark.py filename configname")
  52.  
  53. if (len(sys.argv) > 2):
  54. machinename = sys.argv[2]
  55. else:
  56. xmlTag = dom.getElementsByTagName('Profile')[0].toxml()
  57. machinename =xmlTag.replace('<Profile>','').replace('</Profile>','')
  58. '''
  59.  
  60. try:
  61. xmlTag = dom.getElementsByTagName('Units')[0].toxml()
  62. units =xmlTag.replace('<Units>','').replace('</Units>','')
  63. if units == "0":
  64. units = "1"
  65. else:
  66. units = "0"
  67. except IndexError:
  68. units = "1"
  69.  
  70. # create the pins dictionary
  71. dPins = {'1':'unused-output', '2':'unused-output', '2':'unused-output', '3':'unused-output', '4':'unused-output', '5':'unused-output', '6':'unused-output', '7':'unused-output', '8':'unused-output', '9':'unused-output', '10':'unused-input', '11':'unused-input', '12':'unused-input', '13':'unused-input', '14':'unused-output', '15':'unused-input', '16':'unused-output', '17':'unused-output'}
  72.  
  73. # create the pin invert dictionary
  74. dInvert = {'1':'False', '2':'False', '2':'False', '3':'False', '4':'False', '5':'False', '6':'False', '7':'False', '8':'False', '9':'False', '10':'False', '11':'False', '12':'False', '13':'False', '14':'False', '15':'False', '16':'False', '17':'False'}
  75.  
  76. errors = ''
  77.  
  78. # X Axis
  79. xmlTag = dom.getElementsByTagName('Motor0Active')[0].toxml()
  80. xActive=xmlTag.replace('<Motor0Active>','').replace('</Motor0Active>','')
  81. if xActive == '1':
  82. xmlTag = dom.getElementsByTagName('Motor0StepPin')[0].toxml()
  83. xStepPin = xmlTag.replace('<Motor0StepPin>','').replace('</Motor0StepPin>','')
  84. dPins[xStepPin] = 'xstep'
  85. xmlTag = dom.getElementsByTagName('Motor0DirPin')[0].toxml()
  86. xDirPin = xmlTag.replace('<Motor0DirPin>','').replace('</Motor0DirPin>','')
  87. dPins[xDirPin] = 'xdir'
  88. xmlTag = dom.getElementsByTagName('Motor0StepNeg')[0].toxml()
  89. xStepInvert = xmlTag.replace('<Motor0StepNeg>','').replace('</Motor0StepNeg>','')
  90. if xStepInvert == "1":
  91. dInvert[xStepPin] = 'True'
  92. xmlTag = dom.getElementsByTagName('Motor0DirNeg')[0].toxml()
  93. xDirInvert = xmlTag.replace('<Motor0DirNeg>','').replace('</Motor0DirNeg>','')
  94. if xDirInvert == "1":
  95. dInvert[xDirPin] = 'True'
  96. xmlTag = dom.getElementsByTagName('M0Max')[0].toxml()
  97. xmaxlim = str(xmlTag.replace('<M0Max>','').replace('</M0Max>',''))
  98. xmlTag = dom.getElementsByTagName('M0Min')[0].toxml()
  99. xminlim = str(xmlTag.replace('<M0Min>','').replace('</M0Min>',''))
  100. try:
  101. xmlTag = dom.getElementsByTagName('Steps0')[0].toxml()
  102. xscale = float(xmlTag.replace('<Steps0>','').replace('</Steps0>',''))
  103. xleadscrew = str(xscale / 200)
  104. except IndexError:
  105. errors += "No X Axis Scale was found!\n"
  106. xleadscrew = '0.0'
  107. try:
  108. xmlTag = dom.getElementsByTagName('Vel0')[0].toxml()
  109. xmaxvel = str(float(xmlTag.replace('<Vel0>','').replace('</Vel0>','')))
  110. except IndexError:
  111. errors += "No X Axis Max Velocity was found!\n"
  112. xmaxvel = '0.0'
  113. try:
  114. xmlTag = dom.getElementsByTagName('Acc0')[0].toxml()
  115. xmaxacc = str(float(xmlTag.replace('<Acc0>','').replace('</Acc0>','')))
  116. except IndexError:
  117. errors += "No X Axis Acceleration was found!\n"
  118. xmaxacc = '0.0'
  119. else:
  120. xmaxlim = '0.0'
  121. xminlim = '0.0'
  122. xleadscrew = '1.0'
  123. xmaxvel = '0.0'
  124. xmaxacc = '0.0'
  125.  
  126. # Y Axis
  127. xmlTag = dom.getElementsByTagName('Motor1Active')[0].toxml()
  128. yActive=xmlTag.replace('<Motor1Active>','').replace('</Motor1Active>','')
  129. if yActive == '1':
  130. xmlTag = dom.getElementsByTagName('Motor1StepPin')[0].toxml()
  131. yStepPin = xmlTag.replace('<Motor1StepPin>','').replace('</Motor1StepPin>','')
  132. dPins[yStepPin] = 'ystep'
  133. xmlTag = dom.getElementsByTagName('Motor1DirPin')[0].toxml()
  134. yDirPin = xmlTag.replace('<Motor1DirPin>','').replace('</Motor1DirPin>','')
  135. dPins[yDirPin] = 'ydir'
  136. xmlTag = dom.getElementsByTagName('Motor1StepNeg')[0].toxml()
  137. yStepInvert = xmlTag.replace('<Motor1StepNeg>','').replace('</Motor1StepNeg>','')
  138. if yStepInvert == "1":
  139. dInvert[yStepPin] = 'True'
  140. xmlTag = dom.getElementsByTagName('Motor1DirNeg')[0].toxml()
  141. yDirInvert = xmlTag.replace('<Motor1DirNeg>','').replace('</Motor1DirNeg>','')
  142. if yDirInvert == "1":
  143. dInvert[yDirPin] = 'True'
  144. xmlTag = dom.getElementsByTagName('M1Max')[0].toxml()
  145. ymaxlim = str(xmlTag.replace('<M1Max>','').replace('</M1Max>',''))
  146. xmlTag = dom.getElementsByTagName('M1Min')[0].toxml()
  147. yminlim = str(xmlTag.replace('<M1Min>','').replace('</M1Min>',''))
  148. try:
  149. xmlTag = dom.getElementsByTagName('Steps1')[0].toxml()
  150. yscale = float(xmlTag.replace('<Steps1>','').replace('</Steps1>',''))
  151. yleadscrew = str(yscale / 200)
  152. except IndexError:
  153. errors += "No Y Axis Scale was found!\n"
  154. yleadscrew = '0.0'
  155. try:
  156. xmlTag = dom.getElementsByTagName('Vel1')[0].toxml()
  157. ymaxvel = str(float(xmlTag.replace('<Vel1>','').replace('</Vel1>','')))
  158. except IndexError:
  159. errors += "No Y Axis Max Velocity was found!\n"
  160. ymaxvel = '0.0'
  161. try:
  162. xmlTag = dom.getElementsByTagName('Acc1')[0].toxml()
  163. ymaxacc = str(float(xmlTag.replace('<Acc1>','').replace('</Acc1>','')))
  164. except IndexError:
  165. errors += "No Y Axis Acceleration was found!\n"
  166. ymaxacc = '0.0'
  167. else:
  168. ymaxlim = '0.0'
  169. yminlim = '0.0'
  170. yleadscrew = '1.0'
  171. ymaxvel = '0.0'
  172. ymaxacc = '0.0'
  173.  
  174. # Z Axis
  175. xmlTag = dom.getElementsByTagName('Motor2Active')[0].toxml()
  176. zActive=xmlTag.replace('<Motor2Active>','').replace('</Motor2Active>','')
  177. if zActive == '1':
  178. xmlTag = dom.getElementsByTagName('Motor2StepPin')[0].toxml()
  179. zStepPin = xmlTag.replace('<Motor2StepPin>','').replace('</Motor2StepPin>','')
  180. dPins[zStepPin] = 'zstep'
  181. xmlTag = dom.getElementsByTagName('Motor2DirPin')[0].toxml()
  182. zDirPin = xmlTag.replace('<Motor2DirPin>','').replace('</Motor2DirPin>','')
  183. dPins[zDirPin] = 'zdir'
  184. xmlTag = dom.getElementsByTagName('Motor2StepNeg')[0].toxml()
  185. zStepInvert = xmlTag.replace('<Motor2StepNeg>','').replace('</Motor2StepNeg>','')
  186. if zStepInvert == "1":
  187. dInvert[zStepPin] = 'True'
  188. xmlTag = dom.getElementsByTagName('Motor2DirNeg')[0].toxml()
  189. zDirInvert = xmlTag.replace('<Motor2DirNeg>','').replace('</Motor2DirNeg>','')
  190. if zDirInvert == "1":
  191. dInvert[zStepPin] = 'True'
  192. xmlTag = dom.getElementsByTagName('M2Max')[0].toxml()
  193. zmaxlim = str(xmlTag.replace('<M2Max>','').replace('</M2Max>',''))
  194. xmlTag = dom.getElementsByTagName('M2Min')[0].toxml()
  195. zminlim = str(xmlTag.replace('<M2Min>','').replace('</M2Min>',''))
  196. try:
  197. xmlTag = dom.getElementsByTagName('Steps2')[0].toxml()
  198. zscale = float(xmlTag.replace('<Steps2>','').replace('</Steps2>',''))
  199. zleadscrew = str(zscale / 200)
  200. except IndexError:
  201. errors += "No Z Axis Scale was found!\n"
  202. zleadscrew = '0.0'
  203. try:
  204. xmlTag = dom.getElementsByTagName('Vel2')[0].toxml()
  205. zmaxvel = str(float(xmlTag.replace('<Vel2>','').replace('</Vel2>','')))
  206. except IndexError:
  207. errors += "No Z Axis Max Velocity was found!\n"
  208. zmaxvel = '0.0'
  209. try:
  210. xmlTag = dom.getElementsByTagName('Acc2')[0].toxml()
  211. zmaxacc = str(float(xmlTag.replace('<Acc2>','').replace('</Acc2>','')))
  212. except IndexError:
  213. errors += "No Z Axis Acceleration was found!\n"
  214. zmaxacc = '0.0'
  215. else:
  216. zmaxlim = '0.0'
  217. zmaxlim = '0.0'
  218. zleadscrew = '1.0'
  219. zmaxvel = '0.0'
  220. zmaxacc = '0.0'
  221.  
  222. # A Axis
  223. xmlTag = dom.getElementsByTagName('Motor3Active')[0].toxml()
  224. aActive=xmlTag.replace('<Motor3Active>','').replace('</Motor3Active>','')
  225. if aActive == '1':
  226. xmlTag = dom.getElementsByTagName('Motor3StepPin')[0].toxml()
  227. aStepPin = xmlTag.replace('<Motor3StepPin>','').replace('</Motor3StepPin>','')
  228. dPins[aStepPin] = 'astep'
  229. xmlTag = dom.getElementsByTagName('Motor3DirPin')[0].toxml()
  230. aDirPin = xmlTag.replace('<Motor3DirPin>','').replace('</Motor3DirPin>','')
  231. dPins[aDirPin] = 'adir'
  232. xmlTag = dom.getElementsByTagName('Motor3StepNeg')[0].toxml()
  233. aStepInvert = xmlTag.replace('<Motor3StepNeg>','').replace('</Motor3StepNeg>','')
  234. if aStepInvert == "1":
  235. dInvert[aStepPin] = 'True'
  236. xmlTag = dom.getElementsByTagName('Motor3DirNeg')[0].toxml()
  237. aDirInvert = xmlTag.replace('<Motor3DirNeg>','').replace('</Motor3DirNeg>','')
  238. if aDirInvert == "1":
  239. dInvert[aDirPin] = 'True'
  240. xmlTag = dom.getElementsByTagName('M3Max')[0].toxml()
  241. amaxlim = str(xmlTag.replace('<M3Max>','').replace('</M3Max>','')).rstrip('.')
  242. xmlTag = dom.getElementsByTagName('M3Min')[0].toxml()
  243. aminlim = str(xmlTag.replace('<M3Min>','').replace('</M3Min>','')).rstrip('.')
  244. try:
  245. xmlTag = dom.getElementsByTagName('Steps3')[0].toxml()
  246. ascale = float(xmlTag.replace('<Steps3>','').replace('</Steps3>',''))
  247. aleadscrew = str(int(ascale / 200))
  248. except IndexError:
  249. errors += "No A Axis Scale was found!\n"
  250. aleadscrew = '0'
  251. try:
  252. xmlTag = dom.getElementsByTagName('Vel3')[0].toxml()
  253. amaxvel = str(xmlTag.replace('<Vel3>','').replace('</Vel3>',''))
  254. amaxvel = amaxvel.rsplit(".",1)
  255. amaxvel = amaxvel[0]
  256. except IndexError:
  257. errors += "No A Axis Max Velocity was found!\n"
  258. amaxvel = '0'
  259. try:
  260. xmlTag = dom.getElementsByTagName('Acc3')[0].toxml()
  261. amaxacc = str(xmlTag.replace('<Acc3>','').replace('</Acc3>',''))
  262. amaxacc = amaxacc.rsplit(".",1)
  263. amaxacc = amaxacc[0]
  264. except IndexError:
  265. errors += "No A Axis Acceleration was found!\n"
  266. amaxacc = '0'
  267. else:
  268. amaxlim = '0'
  269. aminlim = '0'
  270. aleadscrew = '1'
  271. amaxvel = '0'
  272. amaxacc = '0'
  273.  
  274.  
  275. # open the stepconf file for writing
  276. filename = machinename + ".stepconf"
  277. sc = open(filename, "wb")
  278. sc.write('<?xml version="1.0" ?>\n')
  279. sc.write("<stepconf>\n")
  280. sc.write(' <property name="ahomepos" type="int" value="0"/>\n')
  281. sc.write(' <property name="ahomesw" type="int" value="0"/>\n')
  282. sc.write(' <property name="ahomevel" type="float" value="0"/>\n')
  283. sc.write(' <property name="alatchdir" type="int" value="0"/>\n')
  284. sc.write(' <property name="aleadscrew" type="int" value="' + aleadscrew + '"/>\n')
  285. sc.write(' <property name="amaxacc" type="int" value="' + amaxacc + '"/>\n')
  286. sc.write(' <property name="amaxlim" type="int" value="' + amaxlim + '"/>\n')
  287. sc.write(' <property name="amaxvel" type="int" value="0"/>\n')
  288. sc.write(' <property name="amicrostep" type="int" value="1"/>\n')
  289. sc.write(' <property name="aminlim" type="int" value="' + aminlim + '"/>\n')
  290. sc.write(' <property name="apulleyden" type="int" value="1"/>\n')
  291. sc.write(' <property name="apulleynum" type="int" value="1"/>\n')
  292. sc.write(' <property name="ascale" type="int" value="0"/>\n')
  293. sc.write(' <property name="asteprev" type="int" value="200"/>\n')
  294. sc.write(' <property name="axes" type="int" value="0"/>\n')
  295. sc.write(' <property name="classicladder" type="bool" value="False"/>\n')
  296. sc.write(' <property name="createshortcut" type="bool" value="False"/>\n')
  297. sc.write(' <property name="createsymlink" type="bool" value="False"/>\n')
  298. sc.write(' <property name="customhal" type="int" value="1"/>\n')
  299. sc.write(' <property name="digitsin" type="float" value="15.0"/>\n')
  300. sc.write(' <property name="digitsout" type="float" value="15.0"/>\n')
  301. sc.write(' <property name="dirhold" type="float" value="20000.0"/>\n')
  302. sc.write(' <property name="dirsetup" type="float" value="20000.0"/>\n')
  303. sc.write(' <property name="drivertype" type="string" value="other"/>\n')
  304. sc.write(' <property name="floatsin" type="float" value="10.0"/>\n')
  305. sc.write(' <property name="floatsout" type="float" value="10.0"/>\n')
  306. sc.write(' <property name="halui" type="bool" value="False"/>\n')
  307. sc.write(' <property name="ioaddr" type="string" value="0x378"/>\n')
  308. sc.write(' <property name="ioaddr2" type="string" value="Enter Address"/>\n')
  309. sc.write(' <property name="ioaddr3" type="string" value="Enter Address"/>\n')
  310. sc.write(' <property name="ladderconnect" type="bool" value="True"/>\n')
  311. sc.write(' <property name="ladderhaltype" type="int" value="0"/>\n')
  312. sc.write(' <property name="laddername" type="string" value="custom.clp"/>\n')
  313. sc.write(' <property name="latency" type="float" value="15000.0"/>\n')
  314. sc.write(' <property name="machinename" type="string" value="' + machinename + '"/>\n')
  315. sc.write(' <property name="manualtoolchange" type="bool" value="True"/>\n')
  316. sc.write(' <property name="md5sums" type="eval" value="[]"/>\n')
  317. sc.write(' <property name="modbus" type="bool" value="False"/>\n')
  318. sc.write(' <property name="number_pports" type="int" value="1"/>\n')
  319. sc.write(' <property name="period" type="int" value="25000"/>\n')
  320. sc.write(' <property name="pin1" type="string" value="' + dPins['1'] + '"/>\n')
  321. sc.write(' <property name="pin10" type="string" value="' + dPins['10'] + '"/>\n')
  322. sc.write(' <property name="pin10inv" type="bool" value="' + dInvert['10'] + '"/>\n')
  323. sc.write(' <property name="pin11" type="string" value="' + dPins['11'] + '"/>\n')
  324. sc.write(' <property name="pin11inv" type="bool" value="' + dInvert['11'] + '"/>\n')
  325. sc.write(' <property name="pin12" type="string" value="' + dPins['12'] + '"/>\n')
  326. sc.write(' <property name="pin12inv" type="bool" value="' + dInvert['12'] + '"/>\n')
  327. sc.write(' <property name="pin13" type="string" value="' + dPins['13'] + '"/>\n')
  328. sc.write(' <property name="pin13inv" type="bool" value="' + dInvert['13'] + '"/>\n')
  329. sc.write(' <property name="pin14" type="string" value="' + dPins['14'] + '"/>\n')
  330. sc.write(' <property name="pin14inv" type="bool" value="' + dInvert['14'] + '"/>\n')
  331. sc.write(' <property name="pin15" type="string" value="' + dPins['15'] + '"/>\n')
  332. sc.write(' <property name="pin15inv" type="bool" value="' + dInvert['15'] + '"/>\n')
  333. sc.write(' <property name="pin16" type="string" value="' + dPins['16'] + '"/>\n')
  334. sc.write(' <property name="pin16inv" type="bool" value="' + dInvert['16'] + '"/>\n')
  335. sc.write(' <property name="pin17" type="string" value="' + dPins['17'] + '"/>\n')
  336. sc.write(' <property name="pin17inv" type="bool" value="' + dInvert['17'] + '"/>\n')
  337. sc.write(' <property name="pin1inv" type="bool" value="' + dInvert['10'] + '"/>\n')
  338. sc.write(' <property name="pin2" type="string" value="' + dPins['2'] + '"/>\n')
  339. sc.write(' <property name="pin2inv" type="bool" value="' + dInvert['2'] + '"/>\n')
  340. sc.write(' <property name="pin3" type="string" value="' + dPins['3'] + '"/>\n')
  341. sc.write(' <property name="pin3inv" type="bool" value="' + dInvert['3'] + '"/>\n')
  342. sc.write(' <property name="pin4" type="string" value="' + dPins['4'] + '"/>\n')
  343. sc.write(' <property name="pin4inv" type="bool" value="' + dInvert['4'] + '"/>\n')
  344. sc.write(' <property name="pin5" type="string" value="' + dPins['5'] + '"/>\n')
  345. sc.write(' <property name="pin5inv" type="bool" value="' + dInvert['5'] + '"/>\n')
  346. sc.write(' <property name="pin6" type="string" value="' + dPins['6'] + '"/>\n')
  347. sc.write(' <property name="pin6inv" type="bool" value="' + dInvert['6'] + '"/>\n')
  348. sc.write(' <property name="pin7" type="string" value="' + dPins['7'] + '"/>\n')
  349. sc.write(' <property name="pin7inv" type="bool" value="' + dInvert['7'] + '"/>\n')
  350. sc.write(' <property name="pin8" type="string" value="' + dPins['8'] + '"/>\n')
  351. sc.write(' <property name="pin8inv" type="bool" value="' + dInvert['8'] + '"/>\n')
  352. sc.write(' <property name="pin9" type="string" value="' + dPins['9'] + '"/>\n')
  353. sc.write(' <property name="pin9inv" type="bool" value="' + dInvert['9'] + '"/>\n')
  354. sc.write(' <property name="pp2_direction" type="int" value="0"/>\n')
  355. sc.write(' <property name="pp3_direction" type="int" value="0"/>\n')
  356. sc.write(' <property name="pyvcp" type="bool" value="False"/>\n')
  357. sc.write(' <property name="pyvcpconnect" type="bool" value="False"/>\n')
  358. sc.write(' <property name="pyvcphaltype" type="int" value="0"/>\n')
  359. sc.write(' <property name="pyvcpname" type="string" value="blank.xml"/>\n')
  360. sc.write(' <property name="s32in" type="float" value="10.0"/>\n')
  361. sc.write(' <property name="s32out" type="float" value="10.0"/>\n')
  362. sc.write(' <property name="spindlecarrier" type="float" value="100.0"/>\n')
  363. sc.write(' <property name="spindlecpr" type="float" value="100.0"/>\n')
  364. sc.write(' <property name="spindlefiltergain" type="float" value="0.01"/>\n')
  365. sc.write(' <property name="spindlenearscale" type="float" value="1.5"/>\n')
  366. sc.write(' <property name="spindlepwm1" type="float" value="0.2"/>\n')
  367. sc.write(' <property name="spindlepwm2" type="float" value="0.8"/>\n')
  368. sc.write(' <property name="spindlespeed1" type="float" value="100.0"/>\n')
  369. sc.write(' <property name="spindlespeed2" type="float" value="800.0"/>\n')
  370. sc.write(' <property name="stepspace" type="float" value="5000.0"/>\n')
  371. sc.write(' <property name="steptime" type="float" value="5000.0"/>\n')
  372. sc.write(' <property name="tempexists" type="int" value="0"/>\n')
  373. sc.write(' <property name="units" type="int" value="' + units + '"/>\n')
  374. sc.write(' <property name="usespindleatspeed" type="bool" value="False"/>\n')
  375. sc.write(' <property name="xhomepos" type="float" value="0.0"/>\n')
  376. sc.write(' <property name="xhomesw" type="float" value="0.0"/>\n')
  377. sc.write(' <property name="xhomevel" type="float" value="0.05"/>\n')
  378. sc.write(' <property name="xlatchdir" type="int" value="0"/>\n')
  379. sc.write(' <property name="xleadscrew" type="float" value="' + xleadscrew + '"/>\n')
  380. sc.write(' <property name="xmaxacc" type="float" value="' + xmaxacc + '"/>\n')
  381. sc.write(' <property name="xmaxlim" type="float" value="' + xmaxlim + '"/>\n')
  382. sc.write(' <property name="xmaxvel" type="float" value="1.0"/>\n')
  383. sc.write(' <property name="xmicrostep" type="float" value="1.0"/>\n')
  384. sc.write(' <property name="xminlim" type="float" value="' + xminlim + '"/>\n')
  385. sc.write(' <property name="xpulleyden" type="float" value="1.0"/>\n')
  386. sc.write(' <property name="xpulleynum" type="float" value="1.0"/>\n')
  387. sc.write(' <property name="xscale" type="float" value="0.0"/>\n')
  388. sc.write(' <property name="xsteprev" type="float" value="200.0"/>\n')
  389. sc.write(' <property name="yhomepos" type="float" value="0.0"/>\n')
  390. sc.write(' <property name="yhomesw" type="float" value="0.0"/>\n')
  391. sc.write(' <property name="yhomevel" type="float" value="0.05"/>\n')
  392. sc.write(' <property name="ylatchdir" type="int" value="0"/>\n')
  393. sc.write(' <property name="yleadscrew" type="float" value="' + yleadscrew + '"/>\n')
  394. sc.write(' <property name="ymaxacc" type="float" value="' + ymaxacc + '"/>\n')
  395. sc.write(' <property name="ymaxlim" type="float" value="' + ymaxlim + '"/>\n')
  396. sc.write(' <property name="ymaxvel" type="float" value="1.0"/>\n')
  397. sc.write(' <property name="ymicrostep" type="float" value="1.0"/>\n')
  398. sc.write(' <property name="yminlim" type="float" value="' + yminlim + '"/>\n')
  399. sc.write(' <property name="ypulleyden" type="float" value="1.0"/>\n')
  400. sc.write(' <property name="ypulleynum" type="float" value="1.0"/>\n')
  401. sc.write(' <property name="yscale" type="float" value="8000.0"/>\n')
  402. sc.write(' <property name="ysteprev" type="float" value="200.0"/>\n')
  403. sc.write(' <property name="zhomepos" type="float" value="0.0"/>\n')
  404. sc.write(' <property name="zhomesw" type="float" value="0.0"/>\n')
  405. sc.write(' <property name="zhomevel" type="float" value="0.05"/>\n')
  406. sc.write(' <property name="zlatchdir" type="int" value="0"/>\n')
  407. sc.write(' <property name="zleadscrew" type="float" value="' + zleadscrew + '"/>\n')
  408. sc.write(' <property name="zmaxacc" type="float" value="' + zmaxacc + '"/>\n')
  409. sc.write(' <property name="zmaxlim" type="float" value="' + zmaxlim + '"/>\n')
  410. sc.write(' <property name="zmaxvel" type="float" value="1.0"/>\n')
  411. sc.write(' <property name="zmicrostep" type="float" value="1.0"/>\n')
  412. sc.write(' <property name="zminlim" type="float" value="' + zminlim + '"/>\n')
  413. sc.write(' <property name="zpulleyden" type="float" value="1.0"/>\n')
  414. sc.write(' <property name="zpulleynum" type="float" value="1.0"/>\n')
  415. sc.write(' <property name="zscale" type="float" value="8000.0"/>\n')
  416. sc.write(' <property name="zsteprev" type="float" value="200.0"/>\n')
  417. sc.write("</stepconf>")
  418.  
  419. # close the file
  420. sc.close()
  421.  
  422. rm = open("README", "wb")
  423. if len(errors) > 0:
  424. rm.write("The following errors were found during processing.\n")
  425. rm.write(errors+"\n")
  426. rm.write("This file can be deleted after running the Stepconf Wizard once.\n")
  427. rm.write("Copy the generated .stepconf file to the linuxcnc/configs directory.\n")
  428. rm.write("Run the Stepconf Wizard from the CNC menu.\n")
  429. rm.write("Select Modify a configuration already created with this program.\n")
  430. rm.write("Pick the converted file from the list.\n")
  431. rm.write("If the file did not show up then you have not copied it to the correct directory.\n")
  432. rm.write("Run the latency test on page three with Test Base Period Jitter.\n")
  433. rm.write("Allow the test to run for at least a hour then enter the largest Max Jitter.\n")
  434. rm.write("Go through each screen and check for correctness then save when done.")
  435. rm.close()
  436.  
  437. file = ZipFile(machinename + '.zip', 'w')
  438. file.write(filename)
  439. file.write('README')
  440. file.close()
  441. quit(0)
Advertisement
Add Comment
Please, Sign In to add comment