求助大神帮忙完善lisp
本人lisp初学者,在论坛里找代码拼凑了下边的程序,目的是通过选择中梃线使中梃线自动分成双线,然后修剪掉端头处的线段,并且在分成的各个区域自动生成闭合线,现在自动分成双线和修剪端头线段实现了,后边如何自动生成闭合线求大神帮忙完善感激不尽我的思路是可以记录中梃线两端头处附近区域的点,然后用boundary生成闭合线,供参考
(defun c:zt();中梃
(progn
(vl-load-com)
(setq kxmian 30 mkxmian 35 ztxmian 30 csxmian 41.5 msxmian 67 ktxingshi 2 dajie 11 dajief2 5.5 blfx 7);初始化变量
(setvar "cmdecho" 0) (setvar "osmode" 0)
(setq k 0 a (/ ztxmian 2)) (setq aa (ssget ) f (sslength aa));偏移值
(while (< k f)
(setq ent1 (ssname aa k) VL1 (vlax-ename->vla-object ent1))
(setq ptst (vlax-get VL1 'startpoint) pten (vlax-get VL1 'endpoint)) ;求端点
(setq ptst (list (car ptst) (nth 1 ptst))) (command "OFFSET" a ent1 ptst "" )
(setq bb (entlast)) (command "MIRROR" bb "" ptst pten "n" )
(command"erase" ent1 "" );删除源直线,要保留取直线请消此行函数
(setq k (1+ k))
))
(SETQ S1 (ENTSEL "\nSelect a rectang 选择封闭矩形 :"));选矩形切图程序
(SETQ EN (CAR S1)ENT (ENTGET EN) ENAME (CDR (ASSOC 0 ENT)) CL (CDR (ASSOC 70 ENT)))
(IF (AND (WCMATCH ENAME "*POLYLINE") (= CL 1)) (PROGN
(IF (= ENAME "LWPOLYLINE")
(PROGN(SETQ SL (LENGTH ENT) I 0)
(WHILE (< I SL)(IF (/= (CAR (NTH I ENT)) 10) (SETQ I (1+ I)) (SETQ SL I)))
(SETQ PT1 (CDR (NTH I ENT)) PT2 (CDR (NTH (+ I 4) ENT)) PT3 (CDR (NTH (+ I 8) ENT))PT4 (CDR (NTH (+ I 12) ENT))))
(PROGN(SETQ S2 (ENTNEXT EN) ENT2 (ENTGET S2) ENAME2 (CDR (ASSOC 0 ENT2)) PT1 (CDR (ASSOC 10 ENT2)) PT 2)
(WHILE (/= ENAME2 "SEQEND") (SETQ S2 (ENTNEXT S2) ENT2 (ENTGET S2) ENAME2 (CDR (ASSOC 0 ENT2)))
(SET (READ (STRCAT "PT" (ITOA PT))) (CDR (ASSOC 10 ENT2))) (SETQ PT (1+ PT)))
))
(SETQ A1 (ANGLE PT1 PT2) A2 (ANGLE PT1 PT4) P1 (POLAR (POLAR PT1 (+ A1 PI) 0.01) (+ A2 PI) 0.01)
P2 (POLAR (POLAR PT2 A1 0.01) (+ A2 PI) 0.01) P3 (POLAR (POLAR PT3 A2 0.01) A1 0.01)
P4 (POLAR (POLAR PT4 A2 0.01) (+ A1 PI) 0.01))
(COMMAND "TRIM" EN "" "F" P1 P2 "" "F" P2 P3 "" "F" P3 P4 "" "F" P4 P1 "" "")
) (PRINC "\n所选择的不是复线或线框不封闭!")) ;矩形切图
;此处如何自动生成闭合线求大神帮忙完善
(SETVAR "CMDECHO" 1)
(setvar "osmode" 16383)(princ)
)
帮顶,楼主,我如果,只要分成双线,你的程序应该在哪儿止就好了? 最简单省事的办法是在每个要绘闭合线的区域计算一个点出来用command调用boundary命令,让CAD来帮你完成
如果不用这个,事情会变得比较复杂,如果考虑用pedit来拼接的话需要排除一些线
如果这个也不用那就只能自己进行拓朴构区,应该说这是最难的,有兴趣的话可以看G版的
【Gu_xl】[讨论]根据选择的直线·、圆弧等实体,自动生成有实体围成的所有边界
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=80267&fromuid=202795
看不懂內部為閉合線的意思
你的框線沒斷開,要怎麼閉合
先看看再说
.
页:
[1]