- 积分
- 2140
- 明经币
- 个
- 注册时间
- 2004-10-13
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
楼主 |
发表于 2005-1-5 09:32:00
|
显示全部楼层
飞哥,该程序主要解决N条要打断的线被相交的M条线打断,可能存在有两不相交的情况:程序如下: (DEFUN C:BM (/ OC SS SA I J SS1 SSA P0) (VL-LOAD-COM) (SETQ OC (GETVAR "CMDECHO")) (SETVAR "CMDECHO" 0) (PROMPT "\n 选择要打断的线条:") (SETQ SS (SSGET '((0 . "*LINE,ARC,CIRCLE,ELLIPSE")))) (PROMPT "\n 选择与之相交的线条:") (SETQ SA (SSGET '((0 . "*LINE,ARC,CIRCLE,ELLIPSE")))) (SETQ J 0) (WHILE (< J (SSLENGTH SA)) (SETQ SSA (VLAX-ENAME->VLA-OBJECT (SSNAME SA J))) (SETQ I 0) (WHILE (< I (SSLENGTH SS)) (SETQ SS1 (VLAX-ENAME->VLA-OBJECT (SSNAME SS I))) (SETQ P0 (VLA-INTERSECTWITH SS1 SSA ACEXTENDNONE ) ) (SETQ P0 (VLAX-VARIANT-VALUE P0)) (SETQ P0 (LIST (VLAX-SAFEARRAY-GET-ELEMENT P0 0)[如果不相交此处会出错,所以得先判断如果不存在交点就跳过下面语句执行下一循环] (VLAX-SAFEARRAY-GET-ELEMENT P0 1) ) ) (SETQ P0 (TRANS P0 0 1)) (SETQ P0 (OSNAP P0 "Int")) (SETQ SS1 (LIST (SSNAME SS I) P0)) (COMMAND "_BREAK" SS1 "F" P0 "@") (SETQ SSB (ENTLAST)) (SETQ I (1+ I)) ) (SETQ J (1+ J)) ) (SETVAR "CMDECHO" OC) (PRINC) ) |
|