将单线转换为双线
你好新年快乐
我正在寻找将选择线转换为双线的命令。选择线应在输入值的一半处偏移到两侧,选择线应删除。列表需要遵循以下方式
命令:
>选择行:
>线间距:
请支持我
阿比拉什 试试这个:
(defun c:Test ( / ss of in sn )
;; Tharwat - 03.Jan.2017 ;;
(if (and (setq ss (ssget "_:L" '((0 . "LINE"))))
(setq of (getdist "\nSpecify offset distance :"))
)
(while (setq sn (ssname ss 0))
(mapcar '(lambda (d)
(vlax-invoke (vlax-ename->vla-object sn) 'offset (eval d)))
'((/ of 2.) (- (/ of 2.)))
)
(ssdel sn ss)
(entdel sn)
)
)
(princ)
) (vl-load-com)
在Vanilla AutoLisp中:
(defun c:dline (/ od hd ss i en ed p1 p2 an a9 lt tk cl)
(initget 6)
(setq od (getdist (strcat "\nOffset Distance <" (rtos (getvar "OFFSETDIST") 2 2) ">:")))
(or od (setq od (getvar "OFFSETDIST")))
(setq hd (* od 0.5))
(setvar "OFFSETDIST" od)
(while (setq ss (ssget '((0 . "LINE"))))
(setq i 0)
(while (setq en (ssname ss i))
(setq ed (entget en)
p1 (cdr (assoc 10 ed))
p2 (cdr (assoc 11 ed))
an (angle p1 p2)
a9 (* pi 0.5)
lt (if (assoc6 ed) (cdr (assoc6 ed)) "BYLAYER")
tk (if (assoc 39 ed) (cdr (assoc 39 ed)) 0)
cl (if (assoc 62 ed) (cdr (assoc 62 ed)) 256))
(entmake (list (assoc 0 ed)
(cons 6 lt)
(assoc 8 ed)
(cons 10 (polar p1 (+ an a9) hd))
(cons 11 (polar p2 (+ an a9) hd))
(cons 39 tk)
(cons 62 cl)
(assoc 210 ed)))
(entmake (list (assoc 0 ed)
(cons 6 lt)
(assoc 8 ed)
(cons 10 (polar p1 (- an a9) hd))
(cons 11 (polar p2 (- an a9) hd))
(cons 39 tk)
(cons 62 cl)
(assoc 210 ed)))
(entdel en)
(setq i (1+ i))))
(redraw)
(prin1))
-大卫 谢谢老板。。。。。它真正的支持。。。。它正在工作 尊敬的David Bethel和Tharwat
你的Lisp程序有效。两个lisp对我都很有用谢谢你的支持 很乐意帮忙-非常欢迎你。 以下是另一种与平行于WCS平面的UCS平面兼容的方法:
;; Line to Double-Line-Lee Mac
(defun c:l2dl ( / dis enx hed idx lst sel tmp vec )
(if (minusp (setq dis (getvar 'offsetdist))) (setq dis 1.0))
(initget 6)
(if (setq tmp (getdist (strcat "\nSpecify line separation <" (rtos dis) ">: ")))
(setvar 'offsetdist (setq dis tmp))
)
(setq dis (/ dis 2.0))
(if (setq sel (ssget "_:L" '((0 . "LINE"))))
(repeat (setq idx (sslength sel))
(setq enx (entget (ssname sel (setq idx (1- idx))))
hed (cons '(0 . "LINE") (LM:defaultprops enx))
lst (mapcar '(lambda ( k ) (cdr (assoc k enx))) '(10 11))
vec (apply 'mapcar (cons '- lst))
lst (mapcar '(lambda ( x ) (trans x 0 vec)) lst)
)
(repeat 2
(entmake (append hed (mapcar '(lambda ( a b ) (cons a (trans (cons (+ dis (car b)) (cdr b)) vec 0))) '(10 11) lst)))
(setq dis (- dis))
)
(entdel (cdr (assoc -1 enx)))
)
)
(princ)
)
;; Default Properties-Lee Mac
;; Returns a list of DXF properties for the supplied DXF data,
;; substituting default values for absent DXF groups
(defun LM:defaultprops ( enx )
(mapcar '(lambda ( x ) (cond ((assoc (car x) enx)) ( x )))
'(
(006 . "BYLAYER")
(008 . "0")
(039 . 0.0)
(048 . 1.0)
(062 . 256)
(370 . -1)
)
)
)
(princ)
这是我们一直在为预设尺寸做的事情。
; pipe offset for different size pipes
; by Alan H July 2014
(vl-load-com)
(defun existLinetype (LineTypeName / item loaded)
(setqdoc (vla-get-activedocument (vlax-get-acad-object))) ; open database
(vlax-for item (vla-get-linetypes doc)
(if (= (strcase (vla-get-name item)) (strcase LineTypeName))
(setq loaded T)
)
)
(if (= Loaded T)
(princ "loaded")
(command "-linetype" "L" LineTypeName "P:\\AUTODESK\\SUPPORTFILES\\CUSTOM.LIN" "")
)
)
(existLinetype "EX_PIPE250")
(defun pipeoffset (w / ang stpt pt3 pt4 obj whatis)
(setq oldsnap (getvar "osmode"))
(setvar "osmode" 0)
(setq obj (entsel "\nPick line"))
(setq objtype (vla-get-objectname (vlax-ename->vla-object (car obj))))
(if (= "AcDbLINE" objtype)
(progn
(alert "You have picked an object which is not a line\nTry Again")
(exit)
)
(princ "\nLine")
)
(setq stpt (assoc 10 (entget (car obj))))
(setq stpt (list (nth 1 stpt)(nth 2 stpt)))
(setq endpt (assoc 11 (entget (car obj))))
(setq endpt (list (nth 1 endpt)(nth 2 endpt)))
(setq ang (angle stpt endpt))
(setq pt3 (polar stpt (+ ang (/ pi 2.0)) 1.0))
(setq pt4 (polar stpt (- ang (/ pi 2.0)) 1.0))
(command "offset" w obj pt3 "")
(Command "chprop" "last" "" "LT" "EX_PIPE250" "")
(command "offset" w obj pt4 "")
(Command "chprop" "last" "" "LT" "EX_PIPE250" "")
(command "Erase" obj "")
(setvar "osmode" oldsnap)
)
(defun c:P100 ()
(pipeoffset 0.06)
)
(defun c:P150 ()
(pipeoffset 0.08)
)
(defun c:P225 ()
(pipeoffset 0.152)
)
(defun c:P300 ()
(pipeoffset 0.19)
)
(defun c:P375 ()
(pipeoffset 0.228)
)
(defun c:P450 ()
(pipeoffset 0.265)
)
(defun c:P525 ()
(pipeoffset 0.308)
)
(defun c:P600 ()
(pipeoffset 0.35)
)
(defun c:P675 ()
(pipeoffset 0.39)
)
(defun c:P750 ()
(pipeoffset 0.432)
)
(defun c:P825 ()
(pipeoffset 0.473)
)
(defun c:P900 ()
(pipeoffset 0.515)
)
(defun c:P975 ()
(pipeoffset 0.528)
)
(defun c:P1050 ()
(pipeoffset 0.597)
)
(defun c:P1125 ()
(pipeoffset 0.6)
)
(defun c:P1200 ()
(pipeoffset 0.68)
)
(princ)
页:
[1]