找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 11077|回复: 149

[已解决] 动起来吧,我的打点机。我造了你的肉身,晓东赐给你灵魂。

[复制链接]
发表于 2013-10-23 02:18:59 | 显示全部楼层 |阅读模式
悬赏150D豆已解决
     这是最终程序,放前面来,让更多人看到。这是st788796的杰作。谢谢你。
  1. (defun c:tt (/ ss cs pts ptl bp i ih header dir lst ps pl fn el)
  2.   (defun GetPntsPath (bp pts / ptl)
  3.     (setq ptl (list bp))
  4.     (while pts
  5.       (setq pts (mapcar '(lambda (x)
  6.       (list (distance (car ptl) x) x)
  7.     )
  8.    pts
  9.   )
  10.      pts (vl-sort pts
  11.     (function (lambda (e1 e2)
  12.          (< (car e1) (car e2))
  13.        )
  14.     )
  15.   )
  16.      ptl (cons (cadar pts) ptl)
  17.      pts (cdr (mapcar 'cadr pts))
  18.       )
  19.     )
  20.     (reverse ptl)
  21.   )
  22.   (setvar "dimzin" 0)
  23.   (if (and
  24. (setq ss (ssget)) ;_选择整个零件,自动计算Box左下角点
  25. (setq el (xdrx_pickset->ents ss))
  26. (or (setq
  27.        cs (vl-remove-if-not
  28.      '(lambda (x)
  29.         (= (xdrx_getpropertyvalue x "IsA") "AcDbCircle")
  30.       )
  31.      el
  32.    )
  33.      )
  34.      (progn
  35.        (princ "\n程序结束,没有找到圆!")
  36.        nil
  37.      )
  38. )
  39. (progn (setq
  40.    ps
  41.     (vl-remove-if-not
  42.       '(lambda (x)
  43.          (and
  44.     (= (xdrx_getpropertyvalue x "IsA")
  45.        "AcDbPolyline"
  46.     )
  47.     (= (strcase (car (xdrx_getpropertyvalue
  48.          x
  49.          "Layer"
  50.        )
  51.          )
  52.        )
  53.        "XD-CIRCLE-PATH"
  54.     )
  55.          )
  56.        )
  57.       el
  58.     )
  59.         )
  60.         (if (<= (length ps) 1)
  61.    t
  62.    (progn
  63.      (sssetfirst nil (XD::Entity->PickSet ps))
  64.      (princ
  65.        (strcat
  66.          "\n共 "
  67.          (itoa (length ps))
  68.          " 条路径!请保留一条路径或全部删除后再运行!"
  69.        )
  70.      )
  71.      nil
  72.    )
  73.         )
  74. )
  75.       )
  76.     (progn
  77.       (xdrx_document_ucsoff)
  78.       (if ps
  79. (setq ptl (xdrx_getpropertyvalue (car ps) "Vertices")
  80.        bp  (xdrx_curve_getstartpoint (car ps))
  81. )
  82. (progn
  83.    (setq
  84.      pts (xd::list:removedup
  85.     (mapcar
  86.       '(lambda (x) (xdrx_getpropertyvalue x "Center"))
  87.       cs
  88.     )
  89.   )
  90.      bp (car (xdrx_entity_box ss))
  91.      ptl (getpntspath
  92.     bp
  93.     (vl-remove-if '(lambda (x) (equal bp x 0.001)) pts)
  94.   )
  95.    )
  96.    (xdrx_layer_make "XD-Circle-Path" 1)
  97.    (setq pl (apply 'xdrx_polyline_make ptl))
  98.    (xdrx_setpropertyvalue pl "layer" "XD-Circle-Path")
  99. )
  100.       )
  101.       (if (and (= (xdrx_yesorno "接受路径直接输出" "Y") 1)
  102.         (or $globleFilenum (setq $globleFilenum 1))
  103.         (setq
  104.    fn (strcat "XD-"
  105.        (XD::String:Strpad $globleFilenum 4 "0" 0)
  106.       )
  107.         )
  108.         (setq dir (car (xdrx_system_selectfiles
  109.     "选择保存位置"
  110.     (strcat "c:\" fn ".nc")
  111.     "nc"
  112.     1
  113.          )
  114.     )
  115.         )
  116.    )
  117. (progn
  118.    (or (numberp $globlespeed) (setq $globlespeed 50))
  119.    (or (numberp $globlehight) (setq $globlehight 5))
  120.    (if (and (setq i (getint (strcat "\n切削速度[0-200]<"
  121.         (itoa $globlespeed)
  122.         ">: "
  123.        )
  124.       )
  125.      )
  126.      (< 0 i 201)
  127.        )
  128.      (setq $globlespeed i)
  129.      (setq i $globlespeed)
  130.    )
  131.    (if (and (setq
  132.        ih (getint (strcat "\n安全高度<"
  133.      (if $globlehight
  134.        (itoa $globlehight)
  135.        (itoa (setq $globlehight 5))
  136.      )
  137.      ">: "
  138.     )
  139.    )
  140.      )
  141.      (< 0 ih 51)
  142.        )
  143.      (setq $globlehight ih)
  144.      (setq ih $globlehight)
  145.    )
  146.    (setq header '("G91G28X0Y0Z0"       "G40G17G80G49"
  147.     "G90G54"      "G0z5"      "M00"
  148.     "M03"        "S1500"
  149.    )
  150.   ;;G0X坐标Y坐标Z2       坐标就是框选圆心的坐标,按我的理解,这个应该是离UCS最近那个。
  151.   ;;G01Z-2F50          这里的50就是用户输入的切削速度了。哦,最大值不能超过200,要不然机器就麻烦了。
  152.   ;;G0Z5               这个5也是用户输入的,这是安全高度。最大值50,太高了机器行程不够。
  153.   ptl    (apply
  154.     'append
  155.     (mapcar
  156.       '(lambda (x)
  157.          (list (strcat "G0X"
  158.          (rtos (car x) 2 3)
  159.          "Y"
  160.          (rtos (cadr x) 2 3)
  161.          "Z2"
  162.         )
  163.         "G0Z1"
  164.         (strcat "G01Z-2F" (itoa i))
  165.         (strcat "G0Z" (itoa ih))
  166.          )
  167.        )
  168.       (mapcar '(lambda (a) (mapcar '- a bp)) (cdr ptl))
  169.     )
  170.          )
  171.   lst    (append header ptl '("M30"))
  172.    )
  173.    (xd::list:tofile dir lst)
  174.    (setq $globleFilenum (1+ $globleFilenum))
  175.    (princ
  176.      (strcat "\n写出 " dir " 文件, Ok")
  177.    )
  178. )
  179.       )
  180.       (xdrx_document_ucson)
  181.     )
  182.   )
  183.   (princ)
  184. )
得到大家的帮助我高兴得有点激动。也不知道怎么感谢大家,就把所有的D豆贡献出来吧。
      首先是我弄了一台小机器,其实就是微型的数控铣床。机器倒是做好了,可是我不会数控编程的软件啊,看着机器心里那个急啊。由于绘图软件就会CAD,就想着能不能用CAD的外挂,完成最基本的操作。于是有幸来到这里,看到Lispboy帮写的程序后,着实一个激动啊。从设想到真实的看到可行,真的激动。还有Newer版主的指点。太感谢你们了。现在我很期望这样的一个程序能再进一步,能真正的发挥使用的价值,也很希望得到大家的帮助。 谢谢。
      我先描述一下吧,我的设想是这样的:
       第一步:输入NC命令后,框选需要处理的模板(坐标原点已设在模板的左下角);
       第二步:命令行提示(如果有介面更好)输入安全安度:(默认为5);
       第三步:命令行提示 输入切削速度:(默认为50);
       第四步:用户输入上面两个参数后,回车后便以文本方式输出一个后缀为.nc的文件。(其实输出TXT文件也可以,但是要手动改后缀为NC)。路径由用户选择,就像保存文件那样。如果能记忆上一次的保存位置更佳。
文件名默认为:XDCAD.nc
      至此结束。
  神奇的事情发生了,操作如此简单,居然能输出以下的文本:
    G91G28X0Y0Z0
    G40G17G80G49
        G90G54
        G0z5
        M00
        M03 S1500
        ;以上的内容作为固定的文本开头,是不变的。以下内容的其实就是变化每个圆心的坐标。精度到0.000即可。
           G0X坐标Y坐标Z2       坐标就是框选圆心的坐标,按我的理解,这个应该是离UCS最近那个。
   G01Z-2F50          这里的50就是用户输入的切削速度了。哦,最大值不能超过200,要不然机器就麻烦了。
   G0Z5               这个5也是用户输入的,这是安全高度。最大值50,太高了机器行程不够。
    OK,第一个点就打好了哦,共有三个地方在变,第一是坐标,第二是切削速度,第三安全高度。
    所有的圆心的坐标都按这格式出来就好了。当然,后台计算的最佳路径就是看不见的了。
   M30         文本的最后以这个结束。这也是固定不变的。
         加工完毕!
   


以下是我手写的一个样本,输出的文件格式应该和这一样:

G91G28X0Y0Z0
G40G17G80G49
G90G54
G0Z5
M00
M03 S1500  

G0X5.105Y4.958Z2   
G01Z-2F50       
G0Z5               
G0X15.230Y9.775Z2      
G01Z-2F50
G0Z5
G0X25.000Y31.500Z2     
G01Z-2F50
G0Z5
"若干个孔,,,,,,,,"

M30


       对了,所有的0都是数字零。 期待大师的杰作,完了,我上传加工过程图片上来。先谢谢大家了。









XYZ轴由三个蓝圈处的电机控制运动,绿色处是主轴带动刀具进行加工的。

XYZ轴由三个蓝圈处的电机控制运动,绿色处是主轴带动刀具进行加工的。
OKOK.jpg

最佳答案

查看完整内容

虽然是专业应用,去掉专业术语用编程语言来说就是在框选里找出所有 Circle ,包括块内的圆,取圆心坐标,过滤掉重复,转换到当前坐标系下(这个UCS取所有实体的Box左下点?),排行列后按规则写出
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-23 02:19:00 | 显示全部楼层
本帖最后由 st788796 于 2013-10-23 07:49 编辑

虽然是专业应用,去掉专业术语用编程语言来说就是在框选里找出所有 Circle ,包括块内的圆,取圆心坐标,过滤掉重复,转换到当前坐标系下(这个UCS取所有实体的Box左下点?),排行列后按规则写出

点评

是的,取左下角为原点。其实专业不专业,关键是看怎么应用。  详情 回复 发表于 2013-10-23 09:47
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2013-10-23 02:22:48 | 显示全部楼层

本帖最后由 ghoust 于 2013-10-23 02:28 编辑

补充一下:对于图内有块不好编程的话,可以要求用户将块炸开。必竟这个操作很快。图片请放大看一下。另外,能不能将函数都放进一个LISP里面啊,或者能“包装”一下吗?加载一个LISP就那样。谢谢各位了。
这么晚了,好饿啊,,,,洗 洗 赶紧睡觉,真的有点困了。明天还有得忙呢。各位明天见喽!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 828个

财富等级: 财运亨通

发表于 2013-10-23 02:42:41 | 显示全部楼层
这个就是雕刻机,用精雕做文件,转成nc,应该就可以使用了,很方便的

点评

是不是该睡觉了啊,现在时间,,,是吧。  详情 回复 发表于 2013-10-23 02:47

评分

参与人数 1D豆 +5 收起 理由
ghoust + 5

查看全部评分

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

使用道具 举报

 楼主| 发表于 2013-10-23 02:45:31 | 显示全部楼层
打点和精雕NC还是不一样的。关键是效率上跟CAD没得比。CAD直接出NC了,太爽了。还有就是精雕软件,掌握的人相对CAD来说,要少很多,而且操作不如CAD简单。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2013-10-23 02:47:13 | 显示全部楼层
ngc 发表于 2013-10-23 02:42
这个就是雕刻机,用精雕做文件,转成nc,应该就可以使用了,很方便的

是不是该睡觉了啊,现在时间,,,是吧。

点评

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

使用道具 举报

已领礼包: 343个

财富等级: 日进斗金

发表于 2013-10-23 08:25:21 | 显示全部楼层
就是一台小铣床嘛,铣孔用的
都有专门软件吧,要不就是楼主不会什么软件,mastercam已经可以解决很多问题了

点评

数控就是一个专业,专业的软件当然有,而且非常多,我知道的就有:MasterCAM,PowerMill,UG,CIMATRON其它还有很多呢。以前我是电脑锣操作员,也会MasterCAM编程,七八年之后,我全部忘记了。做机器之前,我还以  详情 回复 发表于 2013-10-23 09:58

评分

参与人数 1D豆 +5 收起 理由
ghoust + 5 热心帮忙奖!

查看全部评分

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-23 09:40:25 | 显示全部楼层
一小部分供参考,写外部文件部分未完成
  1. (defun c:tt (/ getcircleinblk ss ss1 basept e typ ptl)
  2.   (defun getcircleinblk (bname)
  3.     (mapcar '(lambda (x)
  4.         (xdrx_getpropertyvalue x "Center")
  5.       )
  6.      (xdrx_block_getentities bname '((0 . "circle")))
  7.     )
  8.   )
  9.   (if (and (setq ss (ssget))
  10.     (setq ss1 (ssget "P" '((0 . "Circle,Insert"))))
  11.       )
  12.     (progn
  13.       (setq basePt (car  (xdrx_entity_box ss)))
  14.       (xdrx_setsstodb ss1 0)
  15.       (while (setq e (xdrx_getentdata 0))
  16. (setq typ (xdrx_getentdxf 0))
  17. (if (= typ "CIRCLE")
  18.    (setq ptl (cons (xdrx_getentdxf 10) ptl))
  19.    (if (setq pts (getcircleinblkdef (xdrx_getentdxf 2)))
  20.      (setq pts (mapcar '(lambda (p)
  21.      (trans p e 0 1)
  22.           )
  23.         )
  24.     ptl (append pts ptl)
  25.      )
  26.    )
  27. )
  28.       )
  29.       (setq
  30. ptl (vl-sort (mapcar '(lambda (x) (mapcar - x basept)) ptl)
  31.        '(lambda (p1 p2)
  32.    (if (equal (cadr p1) (cadr p2))
  33.      (< (car p1) (car p2))
  34.      (< (cadr p1) (cadr p2))
  35.    )
  36.         )
  37.      )
  38.       )
  39.     )
  40.   )
  41.   (princ)
  42. )

点评

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

使用道具 举报

 楼主| 发表于 2013-10-23 09:47:12 | 显示全部楼层
st788796 发表于 2013-10-23 07:46
虽然是专业应用,去掉专业术语用编程语言来说就是在框选里找出所有 Circle ,包括块内的圆,取圆心坐标,过 ...

是的,取左下角为原点。其实专业不专业,关键是看怎么应用。

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

使用道具 举报

 楼主| 发表于 2013-10-23 09:58:49 | 显示全部楼层
429014673 发表于 2013-10-23 08:25
就是一台小铣床嘛,铣孔用的
都有专门软件吧,要不就是楼主不会什么软件,mastercam已经可以解决很多问题 ...

数控就是一个专业,专业的软件当然有,而且非常多,我知道的就有:MasterCAM,PowerMill,UG,CIMATRON其它还有很多呢。以前我是电脑锣操作员,也会MasterCAM编程,七八年之后,我全部忘记了。做机器之前,我还以为能像以前那样熟悉呢。没想到是完全忘了啊。那软件是全英文的,而且介面不是会好。就是因为专业的软件太复杂了,所以才想着用最简单的方法来做。CAD是不二之选啊。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2013-10-23 10:02:26 | 显示全部楼层
st788796 发表于 2013-10-23 09:40
一小部分供参考,写外部文件部分未完成

期待佳作完成。

点评

程序要和绘图规则联系起来,比如块里面不要用嵌套块,否则可能找不出所有圆,零件种类很多,非专业编程有个验证准确性问题,因为楼主不懂编程,所以用lisp最好提出坐标后绘制一个连线,检查是不是遗漏,路径是否合理  详情 回复 发表于 2013-10-23 11:00
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2013-10-23 11:00:40 来自手机 | 显示全部楼层
本帖最后由 Free-Lancer 于 2013-10-23 11:03 编辑
ghoust 发表于 2013-10-23 10:02
期待佳作完成。


程序要和绘图规则联系起来,比如块里面不要用嵌套块,否则可能找不出所有圆,零件种类很多,非专业编程有个验证准确性问题,因为楼主不懂编程,所以用lisp最好提出坐标后绘制一个连线,检查是不是遗漏,路径是否合理,确认写出文件,否则退出保留pline,手动调整pline节点,下次用pline写文件
非专业,一家之言,仅供参考

点评

大师说得很好啊。你说不用块这个问题可以让用户来完成。编程之前,必须把所有的图元分解即可。这个不影响,专业CAD设计的对图元前期处理都没什么问题。  主要是后面,你说那个连线查漏和手动修改节点非常好。我  详情 回复 发表于 2013-10-23 11:20

评分

参与人数 1D豆 +5 收起 理由
ghoust + 5 技术引导讨论和指点奖!

查看全部评分

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

使用道具 举报

 楼主| 发表于 2013-10-23 11:20:44 | 显示全部楼层
Free-Lancer 发表于 2013-10-23 11:00
程序要和绘图规则联系起来,比如块里面不要用嵌套块,否则可能找不出所有圆,零件种类很多,非专业编程 ...

大师说得很好啊。你说不用块这个问题可以让用户来完成。编程之前,必须把所有的图元分解即可。这个不影响,专业CAD设计的对图元前期处理都没什么问题。  主要是后面,你说那个连线查漏和手动修改节点非常好。我知道有一个叫YCUT的线切割外挂就是这样的。框选模板后有串连线,有编号,可以手动修改。等下上图让大家看下。

点评

先写了一个求路径的,效率未必高,总体上也未必是最佳 在圆心连线  详情 回复 发表于 2013-10-23 12:56
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-23 12:56:11 | 显示全部楼层
ghoust 发表于 2013-10-23 11:20
大师说得很好啊。你说不用块这个问题可以让用户来完成。编程之前,必须把所有的图元分解即可。这个不影响 ...

先写了一个求路径的,效率未必高,总体上也未必是最佳
在圆心连线
  1. (defun GetPntsPath (bp pts / ptl)
  2.   (setq ptl (list bp))
  3.   (while pts
  4.     (setq pts (mapcar '(lambda (x) (list (distance (car ptl) x) x))
  5.         pts
  6.        )
  7.    pts (vl-sort pts
  8.          (function (lambda (e1 e2)
  9.        (< (car e1) (car e2))
  10.      )
  11.          )
  12.        )
  13.    ptl (cons (cadar pts) ptl)
  14.    pts (cdr (mapcar 'cadr pts))
  15.     )
  16.   )
  17.   (reverse  ptl)
  18. )
  19. (defun c:tt (/ ss pts ptl bp)
  20.   (if (setq ss (ssget '((0 . "Circle"))))
  21.     (progn
  22.       (setq
  23. pts (mapcar '(lambda (x) (xdrx_getpropertyvalue x "Center"))
  24.       (xdrx_pickset->ents ss)
  25.      )
  26. bp  (car (xdrx_entity_box ss))
  27. ptl (getpntspath
  28.        bp
  29.        (vl-remove-if '(lambda (x) (equal bp x 0.001)) pts)
  30.      )
  31.       )
  32.       (apply 'xdrx_polyline_make ptl)
  33.     )
  34.     (princ)
  35.   )
  36. )

点评

这算不算有问题。。。不知道程序的用处  详情 回复 发表于 2013-10-24 09:22
这个路径用了什么算法吗? 给个图更好了。  详情 回复 发表于 2013-10-23 14:49
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-10-23 14:49:11 | 显示全部楼层
st788796 发表于 2013-10-23 12:56
先写了一个求路径的,效率未必高,总体上也未必是最佳
在圆心连线

这个路径用了什么算法吗? 给个图更好了。

点评

由一个基点, 找距离最近的,找到后用这个点作基点再次找最近点,直至结束 有距离相等时取了第一个,所以未必是最佳,不过楼主这个应用点集数量应该不会太大,可以接受  详情 回复 发表于 2013-10-23 15:00
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 11:17 , Processed in 0.487420 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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