Jump to content

Recommended Posts

Posted

hi

happy new year

 

i m looking command for convert select line into double line. select line should be offset into both side at half of entered value & selected line should be delete. list need to following manner

 

command:

>select line:

>distance between lines:

 

Pls support me

abilash

Posted

Try this:

(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)
       

Posted

In Vanilla AutoLisp :

 

[b][color=BLACK]([/color][/b]defun c:dline [b][color=FUCHSIA]([/color][/b]/ od hd ss i en ed p1 p2 an a9 lt tk cl[b][color=FUCHSIA])[/color][/b]

 [b][color=FUCHSIA]([/color][/b]initget 6[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]setq od [b][color=NAVY]([/color][/b]getdist [b][color=MAROON]([/color][/b]strcat [color=#2f4f4f]"\nOffset Distance <"[/color] [b][color=GREEN]([/color][/b]rtos [b][color=BLUE]([/color][/b]getvar [color=#2f4f4f]"OFFSETDIST"[/color][b][color=BLUE])[/color][/b] 2 2[b][color=GREEN])[/color][/b] [color=#2f4f4f]">:  "[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

 [b][color=FUCHSIA]([/color][/b]or od [b][color=NAVY]([/color][/b]setq od [b][color=MAROON]([/color][/b]getvar [color=#2f4f4f]"OFFSETDIST"[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]setq hd [b][color=NAVY]([/color][/b]* od 0.5[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"OFFSETDIST"[/color] od[b][color=FUCHSIA])[/color][/b]

 [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]0 . [color=#2f4f4f]"LINE"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]setq i 0[b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname ss i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]setq ed [b][color=GREEN]([/color][/b]entget en[b][color=GREEN])[/color][/b]
                     p1 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 10 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
                     p2 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 11 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
                     an [b][color=GREEN]([/color][/b]angle p1 p2[b][color=GREEN])[/color][/b]
                     a9 [b][color=GREEN]([/color][/b]* pi 0.5[b][color=GREEN])[/color][/b]
                     lt [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]assoc  6 ed[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc  6 ed[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [color=#2f4f4f]"BYLAYER"[/color][b][color=GREEN])[/color][/b]
                     tk [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]assoc 39 ed[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 39 ed[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] 0[b][color=GREEN])[/color][/b]
                     cl [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]assoc 62 ed[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 62 ed[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] 256[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]assoc 0 ed[b][color=BLUE])[/color][/b]
                              [b][color=BLUE]([/color][/b]cons 6 lt[b][color=BLUE])[/color][/b]
                              [b][color=BLUE]([/color][/b]assoc 8 ed[b][color=BLUE])[/color][/b]
                              [b][color=BLUE]([/color][/b]cons 10 [b][color=RED]([/color][/b]polar p1 [b][color=PURPLE]([/color][/b]+ an a9[b][color=PURPLE])[/color][/b] hd[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
                              [b][color=BLUE]([/color][/b]cons 11 [b][color=RED]([/color][/b]polar p2 [b][color=PURPLE]([/color][/b]+ an a9[b][color=PURPLE])[/color][/b] hd[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
                              [b][color=BLUE]([/color][/b]cons 39 tk[b][color=BLUE])[/color][/b]
                              [b][color=BLUE]([/color][/b]cons 62 cl[b][color=BLUE])[/color][/b]
                              [b][color=BLUE]([/color][/b]assoc 210 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]assoc 0 ed[b][color=BLUE])[/color][/b]
                              [b][color=BLUE]([/color][/b]cons 6 lt[b][color=BLUE])[/color][/b]
                              [b][color=BLUE]([/color][/b]assoc 8 ed[b][color=BLUE])[/color][/b]
                              [b][color=BLUE]([/color][/b]cons 10 [b][color=RED]([/color][/b]polar p1 [b][color=PURPLE]([/color][/b]- an a9[b][color=PURPLE])[/color][/b] hd[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
                              [b][color=BLUE]([/color][/b]cons 11 [b][color=RED]([/color][/b]polar p2 [b][color=PURPLE]([/color][/b]- an a9[b][color=PURPLE])[/color][/b] hd[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
                              [b][color=BLUE]([/color][/b]cons 39 tk[b][color=BLUE])[/color][/b]
                              [b][color=BLUE]([/color][/b]cons 62 cl[b][color=BLUE])[/color][/b]
                              [b][color=BLUE]([/color][/b]assoc 210 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]entdel en[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]setq i [b][color=GREEN]([/color][/b]1+ i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]redraw[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 

 

-David

Posted

thank you boss.....its real support....its working

Posted

dear David Bethel & Tharwat

 

your lisp working. both lisp are usefull for me thank you for your support

Posted

Here's another method, compatible with UCS planes parallel to the WCS plane:

[color=GREEN];; Line to Double-Line  -  Lee Mac[/color]

([color=BLUE]defun[/color] c:l2dl ( [color=BLUE]/[/color] dis enx hed idx lst sel tmp vec )
   ([color=BLUE]if[/color] ([color=BLUE]minusp[/color] ([color=BLUE]setq[/color] dis ([color=BLUE]getvar[/color] 'offsetdist))) ([color=BLUE]setq[/color] dis 1.0))
   ([color=BLUE]initget[/color] 6)
   ([color=BLUE]if[/color] ([color=BLUE]setq[/color] tmp ([color=BLUE]getdist[/color] ([color=BLUE]strcat[/color] [color=MAROON]"\nSpecify line separation <"[/color] ([color=BLUE]rtos[/color] dis) [color=MAROON]">: "[/color])))
       ([color=BLUE]setvar[/color] 'offsetdist ([color=BLUE]setq[/color] dis tmp))
   )
   ([color=BLUE]setq[/color] dis ([color=BLUE]/[/color] dis 2.0))
   ([color=BLUE]if[/color] ([color=BLUE]setq[/color] sel ([color=BLUE]ssget[/color] [color=MAROON]"_:L"[/color] '((0 . [color=MAROON]"LINE"[/color]))))
       ([color=BLUE]repeat[/color] ([color=BLUE]setq[/color] idx ([color=BLUE]sslength[/color] sel))
           ([color=BLUE]setq[/color] enx ([color=BLUE]entget[/color] ([color=BLUE]ssname[/color] sel ([color=BLUE]setq[/color] idx ([color=BLUE]1-[/color] idx))))
                 hed ([color=BLUE]cons[/color] '(0 . [color=MAROON]"LINE"[/color]) (LM:defaultprops enx))
                 lst ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( k ) ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] k enx))) '(10 11))
                 vec ([color=BLUE]apply[/color] '[color=BLUE]mapcar[/color] ([color=BLUE]cons[/color] '[color=BLUE]-[/color] lst))
                 lst ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( x ) ([color=BLUE]trans[/color] x 0 vec)) lst)
           )
           ([color=BLUE]repeat[/color] 2
               ([color=BLUE]entmake[/color] ([color=BLUE]append[/color] hed ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( a b ) ([color=BLUE]cons[/color] a ([color=BLUE]trans[/color] ([color=BLUE]cons[/color] ([color=BLUE]+[/color] dis ([color=BLUE]car[/color] b)) ([color=BLUE]cdr[/color] b)) vec 0))) '(10 11) lst)))
               ([color=BLUE]setq[/color] dis ([color=BLUE]-[/color] dis))
           )
           ([color=BLUE]entdel[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] -1 enx)))
       )
   )
   ([color=BLUE]princ[/color])
)

[color=GREEN];; Default Properties  -  Lee Mac[/color]
[color=GREEN];; Returns a list of DXF properties for the supplied DXF data,[/color]
[color=GREEN];; substituting default values for absent DXF groups[/color]

([color=BLUE]defun[/color] LM:defaultprops ( enx )
   ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( x ) ([color=BLUE]cond[/color] (([color=BLUE]assoc[/color] ([color=BLUE]car[/color] x) enx)) ( x )))
      '(
           (006 . [color=MAROON]"BYLAYER"[/color])
           (008 . [color=MAROON]"0"[/color])
           (039 . 0.0)
           (048 . 1.0)
           (062 . 256)
           (370 . -1)
       )
   )
)

([color=BLUE]princ[/color])

Posted

This is something we do all the time for preset sizes.

 

; pipe offset for different size pipes
; by Alan H July 2014
(vl-load-com)
(defun existLinetype (LineTypeName / item loaded)
 (setq  doc (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)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...