在这个循环中画的所有矩形,在循环外,整个程序结束前删除
(while (and (setq s1 (nth n ns)) ;取得第n点的坐标(setq s2 (vl-position s1 ns)) ;取得第n点坐标在交点坐标列表中的位置
(setq s3 (nth (1+ s2) ns)) ;取得第n点下一个点的坐标
(setq is (distance s1 s3)) ;取得相邻两个坐标点的距离
(setq ps11(polar s1 (- k (* 0.5 pi)) (+ th 300)))
(setq ps33(polar s3 (- k (* 0.5 pi)) (+ th 300)))
)
(if (> is 600) ;如果相邻两个坐标点的距离大于600
(progn
(command "line" s1 ps11 "") ;画线
(command "line" s3 ps33 "")
(command "rectang"s1 ps33 "")
)
)
(setq n (1+ n))
)
这是整个程序中的一段,在这个循环中(command "rectang"s1 ps33 "") 画的矩形,我想在整个程序结束前把它删除,这个怎么写
(setq ssa (ssadd))
(while (and (setq s1 (nth n ns)) ;取得第n点的坐标
(setq s2 (vl-position s1 ns)) ;取得第n点坐标在交点坐标列表中的位置
(setq s3 (nth (1+ s2) ns)) ;取得第n点下一个点的坐标
(setq is (distance s1 s3)) ;取得相邻两个坐标点的距离
(setq ps11(polar s1 (- k (* 0.5 pi)) (+ th 300)))
(setq ps33(polar s3 (- k (* 0.5 pi)) (+ th 300)))
)
(if (> is 600) ;如果相邻两个坐标点的距离大于600
(progn
(command "line" s1 ps11 "") ;画线
(command "line" s3 ps33 "")
(command "rectang"s1 ps33 "")
(setq ssa (ssadd (entlast) ssa))
)
)
(setq n (1+ n))
)
(command "_erase" ssa "")
调用 SSAdd 函数
ref: http://bbs.mjtd.com/thread-178513-1-1.html
也可考量这个函数
(grdraw from to color ) 非常谢谢,问题解决
再问一下
(if (> is 600)
改成下面这样,当is=800.0,程序为啥不执行prong下面的command
(if (or (= is 700.0)(= is 800.0) (= is 900.0)(= is 1000.0))
建议参考用 equal 函数
页:
[1]