tanjurun 发表于 2016-11-1 16:58:16

万能的楼主啊,为何要设门槛呢

tanjurun 发表于 2016-11-1 17:14:40

还差好远啊,怎么办呢

gamexia 发表于 2016-11-2 22:31:07

如果图中含封闭图形,必须炸开,才能选择

chshsl 发表于 2017-8-8 12:28:32

G版主,太经典了,下载学习,我有个类似的问题需要解决。

chshsl 发表于 2017-8-9 11:01:30

辅助函数复原

本帖最后由 chshsl 于 2017-8-9 11:17 编辑

经过2天的研究G大侠的代码及网盘函数库,复原了,所缺的几个函数,见大家都希望补全,现贴上。希望G大侠不要见怪。用法:1楼中的 辅助函数+8楼代码+本代码。;命令: (gxl-massoc 10 (entget (car (entsel "选择多段线:")))) 选择多段线:((35846.5 18949.5)
;(36264.4 18956.0) (36617.2 18954.3))
;

(defun gxl-massoc ( d li /als )
      (setq ls '())
      (while (assoc d li)
                (progn
                        (setqa (assoc d li))
                        (setq ls (cons (list (cadr a) (caddr a)) ls))
                        (setq li (xdlsp_list_remove lia))
                )
      )
      (reverse ls)
)

(defun xdlsp_list_remove (el val)
(if (member val el)
    (append
      (reverse (cdr (member val (reverse el))))
      (cdr (member val el))
    )
    el
)
)

;输出50个空格
;(gxl-Str-Space 50) "                                                "
;(gxl-Str-Space -1)
(defun gxl-Str-Space ( d/a )
    (setq a "")
      (if (>d 0)
                (repeat d
                  (setq a (strcat a " " ))
               )
      )
      a
)

;删除表中重复项
(defun gxl-ListDumpAtom( l1 /l2)
(while(setq l2(cons(car l1)l2) l1(vl-remove(car l1)(cdr l1))))
(reverse l2)
)
;;主测试函数

;;;测试
(defun c:mkpoly2 ()
;;(setundoerr)
(princ "\n自动拓扑多边形测试!编制:Gu_xl 2010年8月")
(princ "\n选择线段:")
;;;选择的线段必须已经做完打断预处理,请自行添加处理代码
;(if (not jd) (setq jd 0.00001))
(setq jd 0.00001)
(setq ss (ssget '((0 . "line,arc"))))
(setq t1 (getvar "cdate"))
(setq ssl (GXL-SEL-SS->LIST ss))
(setq nod1 (gxl-ent->Nodes ssl jd))
(setq coordlist (gxl-ent->Coordinates(car nod1)))
(setq touplist (gxl-Toupu-LineList coordlist))
(setq polylist (gxl-MakePolyList touplist coordlist(cadr nod1)))
(setq polylist (gxl-dumpPolyTouPuList polylist))
(setq n 1)
(foreach poly polylist
    (setq enlist (mapcar '(lambda (x) (nth (1- (abs x)) ssl)) poly)
enss (GXL-SEL-LIST->SS enlist)
)
    (setq en (entlast))
    (command "copy" enss "" '(0 0 0) '(0 0 0))
    (setq enss (GXL-SEL-ENTNEXTALL en))
    (command "pedit" (ssname enss 0) "y" "j" enss "" "")
    (setq en (entlast))
    (gxl-CH_Ent en 62 1)
    (gxl-CH_Ent en 8 "多边形层")
    )
(princ "\n总计 ")
(GXL-SYS-TIMEOUT t1)
(princ "\n共生成 ")
(princ (length polylist))
(princ " 个多边形!")
;(reerr)
)

chshsl 发表于 2017-8-12 13:17:31

大侠们,G版主的这个代码,在CAD2008 32位 win7 64位下可以运行,CAD2004 XP下不能运行。求帮助。

479274135 发表于 2017-9-18 10:25:47

学习学习

li809 发表于 2017-9-19 17:10:22

过来学习学习。

caizeping 发表于 2017-10-31 08:51:57

这个真牛

zfcdage 发表于 2017-12-28 09:44:19

期待版主公布更多的源码!不太懂的版友们是要自己不断拿源码调试修改才能变成自己的。或者说这个就是模仿过程。我也知道大概的原理楼主已经公布了。对于不够精的版友来说,差一点不会就不会。差之毫厘失之千里。当然也尊重楼主的知识产权,如果不方便也非常能理解!
页: 13 14 15 16 17 18 19 20 21 22 [23] 24 25 26 27 28 29 30 31 32
查看完整版本: 【Gu_xl】基于方位角计算的拓扑多边形自动构建快速算法