明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1605|回复: 2

用循环画线时,变换坐标系后,如何连续画线!

[复制链接]
发表于 2009-4-13 15:03 | 显示全部楼层 |阅读模式

正常的,假如我有一些列表:'((0 2)(3 5)(2 8)(7 8)(5 4)(4 2 )(8 4)(10 23)(11 14))

用pline划线可以这样:

(setq p_tlist '((0 2)(3 5)(2 8)(7 8)(5 4)(4 2 )(8 4)(10 23)(11 14)))

(setq n ( length  p_tlist  ))

(setq i 0)

(command "pline")

(repeat n          ;这里n应为n+1,但不影响问题,故此省略修改

      (setq pt (nth i pt_list))

      (command pt)

)

结束,现在遇到的问题是 :'((0 2)(3 5)(2 8)(0 8)(5 4)(4 2 )(0 4)(10 23)(11 14)),

这个表每遇到一个内部字表第一个元素为“0”,即:(0 2)(0 8)(0 4)。就需要变化UCS,将UCS变为(420

0),   而变换UCS则必须退出  pline命令,且需用 command /r将上一步生成的pline线结束,这样才能变换UCS,

而以后的结果则是退出pline后,就无法在进入循环,郁闷啊!现在需要的结果是,在三张图纸上,每张有一条线,即以0开

始至下一个0出现之前!谢谢指教!

发表于 2009-4-14 09:21 | 显示全部楼层

用_3dpoly试试看

 楼主| 发表于 2009-4-14 12:42 | 显示全部楼层

问题已经解决如下:

(setq ptlist '((0 0)(100 125)(125 126)(0 0)(200 125)(380 128)(0 0)(280 125)(320 126)))

(setq n (length ptlist))

(setq i 0 num0 0)

(command "pline")

( while (< i n)

                 (if (= (car (nth i ptlist)) 0)

           (setq num0 (+ num0 1))
 )

 ;(while (car (nth i ptlist)))
                  (if      (< num0 2)  ;计算第一段线

                          (progn
                             
                                    (setq  pt (list (car (nth i ptlist))  (cadr (nth i ptlist))))

                                    (command pt)
                           )
                  );;;此段无问题

                (if   ( and  (=  (car (nth i ptlist)) 0)  ( > num0 1))

                      (progn
                                   
                                  (command "")  ;结束上个多段线

                                  (command "ucs" (list 420 0))
         
          (command "")  ;结束UCS
                                 
                                  (command "pline")  ;开始本段多段线

                                  (setq  pt (list (car (nth i ptlist))  (cadr (nth i ptlist))))

                                  (command pt)  ;输入0起点
                      )

                 )

                 (if   ( and  (/= (car (nth i ptlist)) 0)  ( > num0 1))
   
                       (progn

                                  (setq  pt (list (car (nth i ptlist))  (cadr (nth i ptlist))))

                                  (command pt)
                        )
                  )

 (setq i (+ i 1))
)

(command "")

;;改为函数
(defun transdraw ( ptlt / i n num0 pt ptzero)

         
    (setq ptzero (getpoint "请选择第一张图纸零点:"))

       (command "UCS"  ptzero "")

       (setq n (length ptlt))

       (setq i 0 num0 0)

       (command "pline")

    ( while (< i n)   ;统计每次的0的个数

                 (if (= (car (nth i ptlt)) 0)

              (setq num0 (+ num0 1))
 )

      
                 (if      (< num0 2)  ;计算第一段线

                          (progn
                             
                                    (setq  pt (list (car (nth i ptlt))  (cadr (nth i ptlt))))

                                    (command pt)
                           )
                  );;;此段无问题

                (if   ( and  (=  (car (nth i ptlt)) 0)  ( > num0 1)) ;判断0段起点并添入第一点(含0)

                      (progn
                                   
                                  (command "")  ;结束上个多段线

                                  (command "ucs" (list 420 0))
         
          (command "")  ;结束UCS
                                 
                                  (command "pline")  ;开始本段多段线

                                  (setq  pt (list (car (nth i ptlt))  (cadr (nth i ptlt))))

                                  (command pt)  ;输入0起点
                      )

                 )

                 (if   ( and  (/= (car (nth i ptlt)) 0)  ( > num0 1));顺序输入该段除0点后的其他点
   
                       (progn

                                  (setq  pt (list (car (nth i ptlt))  (cadr (nth i ptlt))))

                                  (command pt)
                        )
                 )

             (setq i (+ i 1))  ;i+1,后进入下一循环
 
     );所有多段线输入后,结束while循环

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-7-4 12:34 , Processed in 0.150145 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表