szx025 发表于 2018-11-11 08:58:03

在这个循环中画的所有矩形,在循环外,整个程序结束前删除

(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 "") 画的矩形,我想在整个程序结束前把它删除,这个怎么写


yshf 发表于 2018-11-11 09:35:51

(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 "")

Andyhon 发表于 2018-11-11 09:36:49

调用 SSAdd 函数
ref: http://bbs.mjtd.com/thread-178513-1-1.html

也可考量这个函数
(grdraw from to color )

szx025 发表于 2018-11-11 11:23:39

非常谢谢,问题解决
再问一下
(if (> is 600)
改成下面这样,当is=800.0,程序为啥不执行prong下面的command

(if (or (= is 700.0)(= is 800.0) (= is 900.0)(= is 1000.0))   
                              
       

Andyhon 发表于 2018-11-11 11:53:35

建议参考用 equal 函数
页: [1]
查看完整版本: 在这个循环中画的所有矩形,在循环外,整个程序结束前删除