woodman78 发表于 2022-7-6 09:34:18

选择pline

如何在lisp中选择pline以传递到选择集?

Tharwat 发表于 2022-7-6 09:38:59

这将过滤LWpolyline和Polyline。
 
(setq ss (ssget '((0 . "LWPOLYLINE,POLYLINE"))))

woodman78 发表于 2022-7-6 09:41:57

但要在屏幕上选择它。

Tharwat 发表于 2022-7-6 09:47:28

你这是什么意思?
 
是单数选择吗?

woodman78 发表于 2022-7-6 09:49:59

对不起,如果我没有正确解释。我希望lisp要求用户选择pline。谢谢

Tharwat 发表于 2022-7-6 09:56:48

好吧
 
看看这个。。。
 


(progn
(princ "\n Select POLYLINE(S) only please :")
(setq ss (ssget '((0 . "LWPOLYLINE,POLYLINE"))))
)

 
或者这个。。

(setq free (getvar 'nomutt))
(setvar 'nomutt 1)
(progn
(princ "\n Select POLYLINE(S) only please :")
(setq ss (ssget '((0 . "LWPOLYLINE,POLYLINE"))))
)
(setvar 'nomutt free)

 
塔瓦特

woodman78 发表于 2022-7-6 09:59:43

谢谢我试试看。

woodman78 发表于 2022-7-6 10:03:49

这就是我目前所拥有的。我认为我没有正确集成您的部分,因为我在选择集方面出错。
 

(defun C:yellow_lines (/ *error* ang col clr coords dwo elist midp offsetted ofpt osm p1 p2 p3 pline a b c SUCE SUOM SUSM SUAB SUAD SUCL SUCR)
(setq SUCE (getvar "cmdecho"))
(setq SUOM (getvar "orthomode"))
(setq SUSM (getvar "osmode"))
(setq SUAB (getvar "angbase"))
(setq SUAD (getvar "angdir"))
(setq SUCL (getvar "clayer"))
(setq SUCR (getvar "cecolor"))

(command "_.-layer" "_N" "CCC_LAYOUT_Proposed_Road_Lining_Yellow_Lines" "_C" "2" "CCC_LAYOUT_Proposed_Road_Lining_Yellow_Lines" "" )
(setvar "clayer" "CCC_LAYOUT_Proposed_Road_Lining_Yellow_Lines")

(progn
(princ "\n Select POLYLINE(S) only please :")
(setq pline (ssget '((0 . "LWPOLYLINE,POLYLINE"))))
elist (entget pline)
)
;(setq pline (entlast)
;elist (entget pline)

;(setq elist (entmod (subst (cons 70 1)(assoc 70 elist)elist)));<--close pline
(entmod (subst (cons 43 0)(assoc 43 elist)elist));<--set line width to zero
(setvar "draworderctl" 3)
(command "_.draworder" pline "" "_F");<--set pline's draw order to front
(setq coords (vl-remove-if (function not)
(mapcar (function (lambda (x)
      (if (= 10 (car x))(cdr x))))
   elist))
)
(setq p3 (caddr coords)
   p1 (car coords)
   ang (angle p1 p3)
   ofpt (polar p3 ang 1.0)
   )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(command "._offset" 0.1 pline ofpt "")
(setq offsetted (entlast)
elist (entget offsetted)
)
(if (assoc 62 elist)
(setq elist (subst (cons 62 1)(assoc 62 elist) elist ))
(setq elist (append elist (list '(62 . 1))))
)
(entmod elist)
(command "._pedit" offsetted "_W" 1.0 "")
(command "_.draworder" offsetted "" "_B");<--set pline's draw order to back
(setq coords (vl-remove-if (function not)
(mapcar (function (lambda (x)
      (if (= 10 (car x))(cdr x))))
   elist))
)
(setq p2 (car coords)
midp (mapcar (function (lambda( a b)(/ (+ a b) 2)))
      p1 p2)
)
(command "_.chprop" offsetted "LA" "CCC_LAYOUT_Proposed_Road_Lining_Yellow_Lines" "")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(command "._offset" 0.3 offsetted ofpt "")
(setq offsetted1 (entlast)
elist (entget offsetted1)
)
(if (assoc 62 elist)
(setq elist (subst (cons 62 1)(assoc 62 elist) elist ))
(setq elist (append elist (list '(62 . 1))))
)
(entmod elist)
(command "._pedit" offsetted1 "_W" 1.0 "")
(setq coords (vl-remove-if (function not)
(mapcar (function (lambda (x)
      (if (= 10 (car x))(cdr x))))
   elist))
)
(setq p2 (car coords)
midp (mapcar (function (lambda( a b)(/ (+ a b) 2)))
      p1 p2)
)
;(command "_.chprop" offsetted "LA" "CCC_LAYOUT_Proposed_Road_Lining_Yellow_Lines" "")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(command "_.mleader")
(setvar "cmdecho"   SUCE)
(setvar "orthomode" SUOM)
(setvar "osmode"    SUSM)
(setvar "angbase"   SUAB)
(setvar "angdir"    SUAD)
(setvar "clayer"    SUCL)
(setvar "cecolor"    SUCR)
(princ)
)

woodman78 发表于 2022-7-6 10:06:06

http://lee-mac.com/promptwithdefault.html

Tharwat 发表于 2022-7-6 10:09:26

谢谢Alanjt,
 
我试图整合,但现在当我选择我的方法时,它停止了。能看一下并发现问题吗?
 
(定义C:dyl(/ang coords elist midp Offseted Offseted1 ofpt p1 p2 p3 pline side SUCE SUOM Sum SUAB SUAD SUCL SUCR)(setq SUCE(getvar“cmdecho”)(setq SUOM(getvar“orthomode”)(setq Sum(getvar“osmode”)(setq SUAB(getvar“angbase”)(setq SUAD(getvar“angdir”))(setq SUCL(getvar“clayer”))(setq SUCR(getvar“cecolor”))(命令“.-layer”“)联合国““CCC\u LAYOUT\u Proposed\u Road\u line\u Yellow\u Lines”“\u C”“2”“CCC\u LAYOUT\u Proposed\u Road\u line\u Yellow\u Lines”“(setvar“clayer”“CCC\u LAYOUT\u Proposed\u Road\u line\u Yellow\u Lines”)(setvar“cecolor”“1”)(initget“D S”)(getkword“\n选择绘制线或选择线方法::”(cond((=选项“D”)(Yellow\u Draw))(=选项“S”)(Yellow\u Select))));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(defun yellow_select()(setq pline(entsel)“\n选择路缘线:)(yellow_resume));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(defun yellow\u draw()(命令“.u pline”)(while(=1(logand 1(getvar“cmdactive”))(命令暂停))(setq pline(entlast)elist(entget pline))(setvar“cecolor”“Bylayer”)(命令“.draworder”pline“”“\u F”);
页: [1] 2
查看完整版本: 选择pline