langke52 发表于 2017-12-13 21:59:14

多段线合并命令优化

本帖最后由 langke52 于 2017-12-13 22:14 编辑

;#ddx:03#;多段线合并                                                                                       ﹟
;选一个线段合并与之相连的全部线段,选多个则合并选择内线段。                  
(DEFUN C:MPE () ;多段线合并
(SETQ co_old (GETVAR 'cmdecho))
(SETQ pt_old (GETVAR 'PEDITACCEPT))
(SETVAR 'cmdecho 0)
(SETVAR 'PEDITACCEPT 1) ;转化为多段线
(OR (SETQ ss (SSGET "I" '((0 . "*LINE,ARC"))))
      (SETQ ss (SSGET '((0 . "*LINE,ARC"))))
) ;
(SSSETFIRST nil)
(IF ss
    (PROGN
      (IF (= (SSLENGTH ss) 1)
      (SETQ ss (SSGET "A" '((0 . "*LINE,ARC"))))
      ) ;_ 结束IF
      (COMMAND "pedit" "m" ss "" "j" 0 "")
    ) ;_ 结束PROGN
    (PRINC "\n***未选择对象***")
) ;_ 结束IF
(SETVAR'cmdecho co_old)
(SETVAR'PEDITACCEPT pt_old)
(PRIN1)
) ;_ 结束DEFUN

184632152 发表于 2021-8-5 10:20:27

langke52 发表于 2017-12-14 13:40
(COMMAND "pedit" "m" ss "" "j" 0 "")
pedit 命令里有个模糊距离,我这边输入0 ,就是要交点在同一点才 ...

这个模糊值可以改成输入命令后自己设置吗?可以根据不同的需要随意设置模糊值这样就完美了

langke52 发表于 2017-12-14 13:40:58

htlaser 发表于 2017-12-14 12:57
测试了下烂图还是不能组合   构思:先把图缩小1000倍 组合再把图放大1000倍   不知道程序怎么写!

(COMMAND "pedit" "m" ss "" "j" 0 "")
pedit 命令里有个模糊距离,我这边输入0 ,就是要交点在同一点才能合并,如果两线段有间隙的话,可以把0改成合并控制范围

434939575 发表于 2017-12-14 10:31:40

感谢分享,(SETVAR 'PEDITACCEPT 1) ;转化为多段线总算,知道'PEDITACCEPT的功能.

htlaser 发表于 2017-12-14 12:55:30

对于烂图来说   也不能很合并   

htlaser 发表于 2017-12-14 12:57:14

测试了下烂图还是不能组合   构思:先把图缩小1000倍 组合再把图放大1000倍   不知道程序怎么写!

htlaser 发表于 2017-12-14 13:56:03

好的谢谢    我再测试下

htlaser 发表于 2017-12-14 19:08:34

加了模糊值 一样不行:'(:'(

新鲜8 发表于 2017-12-15 09:15:14

谢谢楼主分享

langke52 发表于 2017-12-15 13:40:39

htlaser 发表于 2017-12-14 19:08
加了模糊值 一样不行

(COMMAND "pedit" "m" ss "" "j" "J" "b" 0.01 "")可以合并你这种线跟圆弧连接的。就是把连接类型改为 添加默认类型 是 延长的 。

htlaser 发表于 2017-12-15 15:13:46

谢谢版主   
页: [1] 2 3
查看完整版本: 多段线合并命令优化