帮助选择
我想移动一个物体,我用这个:(命令“移动”(第n个lst)“p1 p2)
(第n个lst)为()
发生了什么?应该怎样? 张贴变量lst的列表,以确定它们是否正确 AFAICT语法正确:
(命令“_.move”
(第n i个lst);
""
p1
p2)
现在,如果从选择集中选择,它将是(ssname i lst) 这里是整个Lisp程序,命令移动什么也不做。。。应适用于点和文本对,其中插入点具有相同的x和y坐标,z不同
(defun c:pz (/ layer punct)
(princ "\nSELECTEAZA PUNCTELE")
(setq ssp (ssget '((0 . "point"))))
(princ "\nSELECTEAZA TEXTELE")
(setq sst (ssget '((0 . "text"))))
;;;;;;;;;;;;;;;;;;;;;;LISTA PUNCTE
(setq i 0)
(setq listap nil)
(repeat (sslength ssp)
(setq ename (ssname ssp i))
(setq data (entget ename))
(setq entName (cdr (assoc -1 data)))
(setq punct (cdr (assoc 10 data)))
(setq layer (cdr (assoc 8 data)))
(setq culoare (cdr (assoc 62 data)))
(setq listap (cons (list punct layer culoare entName) listap))
(setq i (1+ i))
)
;;;;;;;;;;;;;;;;;;;;;;LISTA TEXTE
(setq i 0)
(setq listat nil)
(repeat (sslength sst)
(setq ename (ssname sst i))
(setq data (entget ename))
(setq entName (cdr (assoc -1 data)))
(setq pct (cdr (assoc 10 data)))
(setq z (atof (cdr (assoc 1 data))))
(setq ztext (caddr pct))
(setq listat (cons (list pct z ztext) listat))
(setq i (1+ i))
)
;;;;;;;;;;;;;;;;;;;;;
;
(setq listabuna nil)
(setq listaent nil)
(setq i 0)
(repeat (length listap)
(setq text (nth i listat))
(foreach punct listap
(if (= (car (car text)) (car (car punct)))
(setq p (list
(list
(car(car punct))
(cadr(car punct))
(cadr text)
) ;_ end of list
(setq la (cadr punct))
(setq cul (caddr punct))
(setq entitate (cadddr punct))
)
) ;_ end of setq
) ;_ end of if
) ;_ end of foreach
(setq listabuna (cons p listabuna))
(setq listaent (cons entitate listaent))
(setq i (1+ i))
) ;_ end of repeat
(setq i 0)
(repeat (length listabuna)
(entmake(list (cons 0 "POINT")
(cons 8 (cadr (nth i listabuna)))
(if
(/= (caddr (nth i listabuna)) nil)
(cons 62 (caddr (nth i listabuna)))
(cons 62 256)
)
(cons 10 (car(nth i listabuna)))))
(command "_.move"
(nth i listaent)
""
(setq pti(car (nth i listat)))
(setq ptf
(list
(car (car (nth i listat)))
(cadr (car (nth i listat)))
(cadr(nth i listat)))))
(setq i (1+ i))
)
(setq sse (ssadd))
(foreach ent listaent (ssadd ent sse))
(command "erase" sse "")
(princ)
)
您需要集中精力调试listabuna变量;它并没有达到应有的水平*。
此外,请注意,如果“颜色”设置为“ByLayer”,则DXF代码62不可用。
(布纳=好的)
真的
MSasu,你能写出生日问候语的代码吗? 恐怕还没有!
Mircea没什么大不了的,只是给我们大家带来了一点乐趣。
干杯
页:
[1]