找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 459|回复: 13

[求助] 需要转出一个文件,测试出错,求高手帮忙看看!

[复制链接]

已领礼包: 160个

财富等级: 日进斗金

发表于 2017-8-9 11:08:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 75215195 于 2017-8-9 13:15 编辑

QQ截图20170809112100.png 需要的文件如下:
123.gif

请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:TEST.rar 
下载次数:3  文件大小:23.14 KB 
下载权限: 不限 以上  [免费赚D豆]


工作需要转出CNC钻孔的程式格式,这个程序出错了,求高手帮忙看看
[Actionscript3] 纯文本查看 复制代码
(defun c:jknc (/ ss mz i ent name r rl tt n lts zj entt zb xz yz)
  (defun _princ (str x txt)
  (setvar "cmdecho" 0)
 (princ (strcat str (if (< x 0)
 (progn
  (setq x (atof (substr (rtos x 2 3) 2))) "-") "+" )
                (dig x 3 3)  ;  这个函数类似[color=red][font=Monaco, Consolas,]([/font][/color][color=#666666][font=Monaco, Consolas,]xd::string:strpad [/font][/color][color=green][font=Monaco, Consolas,]2[/font][/color][color=green][font=Monaco, Consolas,].1[/font][/color][color=#666666][font=Monaco, Consolas,] [/font][/color][color=green][font=Monaco, Consolas,]3[/font][/color][color=#666666][font=Monaco, Consolas,] [/font][/color][color=#ff0ff][font=Monaco, Consolas,]"0"[/font][/color][color=#666666][font=Monaco, Consolas,] [/font][/color][color=green][font=Monaco, Consolas,]3[/font][/color][color=red][font=Monaco, Consolas,]) 这个函数 遇到9的时候似乎出错,格式会少一个0[/font][/color]
 ) txt)
  )
  (setvar "cmdecho" 0)
(if (setq ss (ssget "x" '((0 . "circle")(8 . "M0,JD,90,0,1,PIN")))) 
  (progn
    (setq mz (getstring "\n请输入编号:"))
    (setq i -1
          ent nil)
    (while (setq name (ssname ss (setq i (1+ i))))
      (setq r (cdr (assoc 40 (entget name)))
            rl (list r name)
            ent (cons rl ent))
      )
    (setq ent (reverse (xd::list:groupbyindex ent 0.001)))   ;此处颠倒得不到需要的顺序排列 一个问题
    (setq tt (open (strcat "F:/"mz"DB.txt") "W"))
    (foreach n ent
      (setq r (car n)                     ;按半径分类的圆
            lts (cdr n))
      (setq zj (* r 2))
      (princ (strcat"T"(rtos zj 2 2)) tt) ;"T(rtos zj 2 2)刀具 
      (princ "\n" tt)                     ;按刀具大小分类坐标
;;;      (mapcar '(lambda (x)           删去此段注释代码后,可以运行得到需要的"TX.00"的刀具
;;;        (setq entt (entget x)           但运行这段,坐标写不进入,或只能得到一部分。
;;;              zb (cdr (assoc 10 entt))
;;;              xz (car zb)
;;;              yz (cadr zb))
;;;        (_princ "X" xz tt)
;;;        (_princ "Y" yz tt)
;;;        (princ "\n" tt)
;;;        )
;;;              lts
;;;      )
    )
  )
  )
  (CLOSE tt)
  (PRINC)
  )
另坐标的排列能不能是在文件排列循序是 PIN层的圆坐标,再是是1层的圆坐标,再是0层的圆坐标,之后是其他的。
函数和文档在附件。

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-8-9 11:20:40 | 显示全部楼层

回帖奖励 +10 D豆

转出正确的结果是什么样的,截取个图上来

选什么转出,选的要求是什么也带个图上来说明下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-8-9 11:25:09 | 显示全部楼层
图帮你截取了, 生成的文本文件格式是什么样的,截取前几行代表性的,贴图上来。

你要把圆什么信息提取出去说明下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-8-9 11:37:40 | 显示全部楼层
(dig x 3 3)

函数JIG是做什么的?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 160个

财富等级: 日进斗金

 楼主| 发表于 2017-8-9 12:37:50 | 显示全部楼层

DIG 3 3 3======>003.000 转换成这样的格式。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 160个

财富等级: 日进斗金

 楼主| 发表于 2017-8-9 12:58:44 | 显示全部楼层

图为需要的 1.gif

转出(ssget "x" '((0 . "circle")(8 . "M0,JD,90,0,1,PIN"))))所选层的圆
T4.00下面是PIN层的圆坐标   当PIN层没有圆,弹出警告alert 确认后执行一下
T1.00和T1.01下面是1层的圆坐标
T1.15下面是0层的圆坐标
T5.17下面是90层的圆坐标

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 160个

财富等级: 日进斗金

 楼主| 发表于 2017-8-9 13:01:49 | 显示全部楼层

1.png 2.png

格式是.hao     “ T1~n.00”为刀具大小
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 812个

财富等级: 财运亨通

发表于 2017-8-9 13:14:15 | 显示全部楼层
路过帮顶........
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-8-9 13:28:15 | 显示全部楼层
既然用了 晓东通用函数库的函数,写出文件为什么不用 xd::list:tofile ,
表里面把数据都构造好

你程序先遍历选择集,然后把 半径+实体名 构建成关联表,其实,这个地方,就可以吧图层什么的都构建到关联表里面。免得以后程序还的循环处理。

表好了,

xd::list:tofile 就完成了,

想生成ACADTABLE,就 xd::table:makefromlist
想生成 EXCEL 就  XD::Table:ToExcel

还有,必须要TXT文件吗,EXCEL文件不是更方便?,以后在EXCEL里面可以归类筛选啥的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 160个

财富等级: 日进斗金

 楼主| 发表于 2017-8-9 13:37:38 | 显示全部楼层

生成的文件是让数控钻机器读取的,机械不读EXCEL文件呀。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2017-8-9 14:30:15 | 显示全部楼层
先建一个文本文件,内容是图层顺序,形成索引,然后根据这个索引来过滤,就可以完成按要求的图层排序了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-8-9 19:23:49 | 显示全部楼层
本帖最后由 newer 于 2017-8-9 19:32 编辑

QQ截图20170809191308.png QQ截图20170809191709.png

上面是你提供的图纸计算结果部分截图,完整计算结果见附件TXT,816行数据。
下面是代码,程序关键的地方帮你注释了。

  1. (defun c:tt (/ #center #layer #radius bFound fl info info_0 info_1
  2.                info_other info_pin lst lst1 lst2 mz prefix ss str temp x x_c
  3.                y y_c
  4.             )
  5.   (defun _format (prefix str)
  6.     (if (minusp str)
  7.       (strcat prefix "-" (xd::string:strpad (abs str) 3 "0" 3))
  8.       (strcat prefix "+" (xd::string:strpad (abs str) 3 "0" 3))
  9.     )
  10.   )
  11.   (if (setq ss (ssget '((0 . "circle") (8 . "M0,JD,90,0,1,PIN"))))
  12.     (progn
  13.       (setq mz (getstring "\n请输入编号:"))
  14.       (setq lst (mapcar
  15.                   '(lambda (x)
  16.                      (xdrx_getpropertyvalue x "radius" "layer" nil "center")
  17.                      (if (= #layer "PIN")
  18.                        (setq bFound t)
  19.                      )
  20.                      (setq x_c (_format "X" (car #center))
  21.                            y_c (_format "Y" (cadr #center))
  22.                      )
  23.                      (list #radius (strcase #layer) (strcat x_c y_c))
  24.                    )
  25.                   (xdrx_pickset->ents ss)
  26.                 )
  27.             lst (xd::list:groupbyindex lst 0.01) ; 半径分组
  28.             lst1 (vl-sort lst '(lambda (x y)
  29.                                  (< (car x) (car y))
  30.                                )
  31.                  )
  32.             lst2 (mapcar
  33.                    '(lambda (x)
  34.                       (setq fl (strcat "T" (rtos (* 2 (car x)) 2 2))) ; 直径加T
  35.                       (setq info (cdr x))
  36.                       (setq temp (xd::list:groupbyindex info 1.0)) ; 同一个直径组里面图层再分组
  37.                       (setq info_pin (assoc "PIN" temp)
  38.                             info_0 (assoc "0" temp)
  39.                             info_1 (assoc "1" temp)
  40.                             info_other (vl-remove info_pin temp)
  41.                             info_other (vl-remove info_0 info_other)
  42.                             info_other (vl-remove info_1 info_other)
  43.                             info_other (mapcar
  44.                                          'cdr
  45.                                          info_other
  46.                                        )
  47.                             info_other (apply
  48.                                          'append
  49.                                          info_other
  50.                                        ) ; 其他层坐标信息
  51.                       )
  52.                       (vl-remove nil (list fl (cdr info_pin) (cdr info_1)
  53.                                            (cdr info_0) info_other
  54.                                      )
  55.                       )
  56.                     )
  57.                    lst1
  58.                  )
  59.             lst2 (apply
  60.                    'append
  61.                    lst2
  62.                  )
  63.       )
  64.       (xd::list:tofile (strcat "d:\\" mz "db.txt") lst2)
  65.       (if (not bFound)
  66.         (alert "没有PIN层数据!")
  67.       )
  68.     )
  69.   )
  70.   (princ)
  71. )

请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:2db.txt 
下载次数:1  文件大小:15.72 KB 
下载权限: 不限 以上  [免费赚D豆]



论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 160个

财富等级: 日进斗金

 楼主| 发表于 2017-8-10 14:11:23 | 显示全部楼层

感谢你的热心帮助!

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 96个

财富等级: 招财进宝

发表于 2017-8-11 07:59:52 | 显示全部楼层
看着这么多。眼都花了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-24 02:30 , Processed in 0.443798 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表