fleshget 发表于 2022-7-6 06:28:42

错误:2D-3D点:无/lis

你好
 
尝试为立面图编写新的lisp,但有一些问题我无法解决:/
 
第一个错误:“错误的参数类型:2D/3D点:nil”
此例程昨天正常工作,但现在出现如上所示的错误消息
 
第二个错误:(命令“p1 p2”)(命令“p4 p5”)
p1和p5总是有一个z值,我不明白:/
 
第三个错误:acad始终计算随机角度:/
 
我是新手,我从这么多lisp文件中创建/编辑了这个例程。所以请告诉我自己的设计错误。
 
此处附上示例dwg和代码。。。谢谢你的预付款
 

(defun c:www ()
(vl-load-com)

(setq mysset (ssget '((0 . "*POLYLINE")))
mylength (sslength mysset)
counter 0
)

(while (< counter mylength)

(setq objs (ssname mysset counter))
(setq data (vlax-get (vlax-ename->vla-object objs) "Coordinates") i 0)
(setq blk 1)

(repeat (/ (length data) 3)
(setq x (nth i data)
y (nth (+ 1 i) data)
z (nth (+ 2 i) data)
p (list x y)
i (+ i 3)
n (strcat "ELEV_" (itoa blk))
blk (+ 1 blk)
)

(cond ((= blk 2) (setq p1x (car p)
                             p1y (cadr p)
                                  p1 (list p1x p1y)))
((= blk 3) (setq p2x (car p)
                             p2y (cadr p)
                                  p2 (list p2x p2y)))
((= blk 4) (setq p3x (car p)
                             p3y (cadr p)
                                  p3 (list p3x p3y)))
((= blk 5) (setq p4x (car p)
                             p4y (cadr p)
                                  p4 (list p4x p4y)))
((= blk 6) (setq p5x (car p)
                             p5y (cadr p)
                                  p5 (list p5x p5y)))
)

(setq di-p1_p2 (distance p1 p2)
di-p4_p5 (distance p4 p5)
tx-p1_p2 (/ (+ p1x p2x) 2)
ty-p1_p2 (/ (+ p1y p2y) 2)
txt-p1_p2 (list tx-p1_p2 ty-p1_p2)
tx-p4_p5 (/ (+ p4x p5x) 2)
ty-p4_p5 (/ (+ p4y p5y) 2)
txt-p4_p5 (list tx-p4_p5 ty-p4_p5)
ang (angle p1 p5)
)

(command "-insert" n p "" "" (angtos ang) (rtos z 2 3))
(setq elev_block (entlast))
(command "rotate" elev_block "" p 90)

(command "_line" p1 p2 "")
(command "_line" p4 p5 "")

);repeat

(command "-insert" "ELEV_DIST_LEFT" txt-p1_p2 "" "" (angtos ang) (rtos di-p1_p2 2 1))
(command "-insert" "ELEV_DIST_RIGHT" txt-p4_p5 "" "" (angtos ang) (rtos di-p4_p5 2 1))

(setq counter (+ 1 counter))

);while

)

奥尔内克(2)。图纸

irneb 发表于 2022-7-6 06:56:26

首先,由于非局部变量,某物在一天工作而在下一天不工作的情况是10次中有9次。请参见:http://www.lee-mac.com/localising.html
 
某些z值不应为的情况可能是由于当前设置的高程,或者它可能捕捉到某个现有对象。通过在每个点列表的末尾添加z值,可以将z值强制为0,然后为了避免捕捉,在发送到直线命令的每个点之前执行“非”捕捉力。
 
随机角度是使用lisp时的一种情况,角度是以弧度而不是度定义的:http://www.cadtutor.net/forum/showthread.php?14853-弧度到度

fleshget 发表于 2022-7-6 07:11:15

非常感谢irneb和LeeMac
 
这是最终版本,它的工作就像一个魅力
 
(defun c:kot (/ obj xyz spt ept ang vtx
               b i x y z p n
               p1 p2 p3 p4 p5
               l_dist r_dist
               l_coor r_coor rotate)

(vl-load-com)

(setq mysset (ssget '((8 . "PL_ENKESIT")(0 . "*POLYLINE")))
   mylength (sslength mysset)
   counter 0
)

(while (< counter mylength)

(setq obj (ssname mysset counter)
   xyz (vlax-get (vlax-ename->vla-object obj) "Coordinates")
   spt (vlax-curve-getstartpoint obj)
   ept (vlax-curve-getendpoint obj)
   ang (+ (* 180.0 (/ (angle spt ept) pi)) 90)
   vtx 5
   b 0
   i 0
   )

(if (= (/ (length xyz) 3) vtx) (progn

(repeat vtx

(setq x (nth i xyz)
   y (nth (+ 1 i) xyz)
   z (nth (+ 2 i) xyz)
   p (list x y)
   i (+ 3 i)
   b (+ 1 b)
   n (strcat "ELEV_" (itoa b))
   )

(cond ((= b 1) (setq p1 (list (car p) (cadr p))))
   ((= b 2) (setq p2 (list (car p) (cadr p))))
   ((= b 3) (setq p3 (list (car p) (cadr p))))
   ((= b 4) (setq p4 (list (car p) (cadr p))))
   ((= b 5) (setq p5 (list (car p) (cadr p))))
   )

(command "-insert" n "_non" p "" "" ang (rtos z 2 3))

);repeat

(setq l_dist (distance p1 p2)
   r_dist (distance p4 p5)
   l_coor (list (/ (+ (car p1) (car p2)) 2) (/ (+ (cadr p1) (cadr p2)) 2))
   r_coor (list (/ (+ (car p4) (car p5)) 2) (/ (+ (cadr p4) (cadr p5)) 2))
   rotate (* 180.0 (/ (angle p1 p2) pi))
   )

(command "layer" "set" "ELEV_SECTION" ""
      "_line" "_non" p1 "_non" p2 "_non" p4 "_non" p5 ""
      "-insert" "ELEV_DIST_LEFT" "_non" l_coor "" "" rotate (rtos l_dist 2 1)
      "-insert" "ELEV_DIST_RIGHT" "_non" r_coor "" "" rotate (rtos r_dist 2 1)
      )

);progn

);if

(setq counter (+ 1 counter))

);while

(princ)

);defun

Lee Mac 发表于 2022-7-6 07:18:46

我很高兴听到我的教程是可理解的和有益的!
谢谢你的推荐,我很感激。
 
做得好,fleshget

irneb 发表于 2022-7-6 07:43:03

令人惊叹的很高兴它起作用了!
 
不客气,李,如果这不是一个很好的资源,我不会推荐它!感谢您为社区提供如此全面的辅导!
页: [1]
查看完整版本: 错误:2D-3D点:无/lis