Jump to content

Recommended Posts

Posted

Try the code on post 33. The insertion point on that code is on the left side of the block.

  • Replies 84
  • Created
  • Last Reply

Top Posters In This Topic

  • Lee Mac

    35

  • cabltv1

    22

  • The Buzzard

    20

  • rami_9630

    5

Top Posters In This Topic

Posted Images

Posted

As I have said in my earlier posts and also bolded in red you can alter the block and block length at the top of the code.

 

The break points are calculated using the polar function, as a distance from the base point of the block.

 

My first posted code assumes that the base point is central in the block, and calculates two points either side, at a displacement of half the block length.

 

The code as Buzzard says, in post #33 assumes it to be to the left-hand side of the block - and so, it uses the original selected point as picked by the user, and calculates another point at a displacement of the block length.

 

This method, of course, can be modified to suit any base point.

Posted

One more question.

The previous code I had put a value into the block and rotated it to 0 degrees. Where could I insert that code into your code to end up with the same results?

tap3.jpg

 

Old code:

(command "-insert" "C:/Program Files/directory/blocks/dt_2tap" "s" "1" pause pause "23" "" "" "" "" "")

Posted

The old code rotated the block to zero degrees I see - would you rather the attribute was rotated separately?

Posted

Lee,

 

Yes, just the first attribute needs to be rotated to 0 degrees.

 

Sorry about not noticing the commented notes you added. Yestreday was a hectic day and I only had time to load the Lisp file and try it out.

I appreciate you taking the time to place notes in the code.

Posted
Lee,

 

Yes, just the first attribute needs to be rotated to 0 degrees.

 

Sorry about not noticing the commented notes you added. Yestreday was a hectic day and I only had time to load the Lisp file and try it out.

I appreciate you taking the time to place notes in the code.

 

Thats Ok, I was just a bit peeved that I put highlighted the notes and commented, but no worries. :)

 

Shall I modify the code in post #33? or the code that uses a central base point?

Posted

Hows this:

 

(defun c:brklin (/ *error* bNme bLen vl ov doc
                   spc pt ent aVal lAng bObj)
 (vl-load-com)

 (setq bNme "Test Block")  ;; <<-- Block Name
 (setq bLen  90)           ;; <<-- Block Length

 (defun *error* (msg)
   (if ov (mapcar 'setvar vl ov))
   (if (not
         (wcmatch
           (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
     (princ (strcat "\n<< Error: " msg " >>")))
   (princ))

 (setq vl '("CMDECHO" "OSMODE")
       ov (mapcar 'getvar vl))
 (or (eq 512 (logand 512 (getvar 'OSMODE)))
     (setvar 'OSMODE (+ (getvar 'OSMODE) 512)))

 (setq doc (vla-get-ActiveDocument
             (vlax-get-Acad-Object))
       spc (if (zerop (vla-get-activespace doc))
             (if (= (vla-get-mspace doc) :vlax-true)
               (vla-get-modelspace doc)
               (vla-get-paperspace doc))
             (vla-get-modelspace doc)))

 (cond ((not (snvalid bNme))
        (princ "\n** Block Name Invalid **"))
       ((not (or (tblsearch "BLOCK" bNme)
                 (setq bNme (findfile (strcat bNme ".dwg")))))
        (princ "\n** Block Not Found **"))
       ((not (numberp bLen))
        (princ "\n** Block Length not Numerical **"))
       (t
        

        (while
          (progn
            (setq pt (getpoint "\nSelect Point for Block: "))
            (cond ((not pt) nil)
                  ((setq ent (car (nentselp pt)))
                   (if (not
                         (wcmatch
                           (cdr (assoc 0 (entget ent))) "*LINE"))
                     (princ "\n** Cannot Align to that Object **")))
                  (t (princ "\n** Point Does not Lie on an Object **")))))

        (if ent
          (progn
            (setq aVal (getstring t "\nTAP_VAL: "))
            (setq lAng
              (angle '(0 0 0)
                (vlax-curve-getFirstDeriv ent
                  (vlax-curve-getParamatPoint ent pt))))
                (cond ((and (> lAng (/ pi 2)) (<= lAng pi))
                       (setq lAng (- lAng pi)))
                      ((and (> lAng pi) (<= lAng (/ (* 3 pi) 2)))
                       (setq lAng (+ lAng pi))))
            (setq pt1 (polar pt lAng (/ bLen 2.))
                  pt2 (polar pt (+ lAng pi) (/ bLen 2.)))
            (mapcar 'setvar vl '(0 0))
            (if (vl-catch-all-error-p
                  (vl-catch-all-apply
                    (function
                      (lambda ( )
                        (setq bObj
                          (vla-InsertBlock spc
                            (vlax-3D-point pt) bNme 1. 1. 1. lAng))))))
              (princ "\n** Error Inserting Block **")
              (progn
                (foreach att (vlax-safearray->list
                               (vlax-variant-value
                                 (vla-getAttributes bObj)))
                  (and (eq "TAP_VAL" (vla-get-TagString att))
                       (not (vla-put-rotation att 0.0))
                       (not (vla-put-TextString att aVal))))
                (command "_.break" (list ent pt) "_F" pt1 pt2)))))))
 (mapcar 'setvar vl ov)
 (princ))

Posted

Nice idea Alan, I like it.

 

Quite temperamental, but good all the same when used with the correct type of block. I was going to go down that avenue using IntersectWith, but I didn't think about exploding the block, then re-inserting - so I kept getting only one intersection point.

 

Lee

Posted

Lee,

 

What do you mean "Hows this"? It is perfect as usual!

Thanks for all of your help. It is exactly what I was looking for.

 

Your the best!

Posted

CAB,

 

Thanks for the input. I will check it out.

Posted

Not sure if this would be of any use Alan:

 

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] trim_Obj [b][color=RED]([/color][/b]Obj [b][color=BLUE]/[/color][/b] MiP MaP pt ss Objlst x lst[b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]vla-getBoundingBox[/color][/b] Obj [b][color=DARKRED]'[/color][/b]MiP [b][color=DARKRED]'[/color][/b]MaP[b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pt [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-safearray->list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] MiP MaP[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
       ss [b][color=RED]([/color][/b][b][color=BLUE]ssget[/color][/b] [b][color=#ff00ff]"_C"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] pt[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] pt[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]ssdel[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-vla-object->ename[/color][/b] Obj[b][color=RED])[/color][/b] ss[b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]zerop[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]sslength[/color][/b] ss[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] Objlst [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b]
                    [b][color=RED]([/color][/b][b][color=BLUE]vl-remove-if[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]listp[/color][/b]
                      [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]ssnamex[/color][/b] ss[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b]
         [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b]
           [b][color=RED]([/color][/b][b][color=BLUE]vla-move[/color][/b] x
             [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
               [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#009900]1[/color][/b]e99[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
           [b][color=RED]([/color][/b][b][color=BLUE]vla-move[/color][/b] x
             [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
               [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#009900]-1[/color][/b]e99[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]append[/color][/b] Objlst [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] Obj[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] x [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] Objlst[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pt
             [b][color=RED]([/color][/b]vlax-list->3D-point
               [b][color=RED]([/color][/b][b][color=BLUE]vlax-invoke[/color][/b] Obj
                 [b][color=DARKRED]'[/color][/b]IntersectWith x [b][color=Blue]acExtendNone[/color][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
         [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] lst
           [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b]
             [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b]
               [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-vla-object->ename[/color][/b] x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] pt[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
               [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] pt[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] pt[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] Objlst [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] Objlst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b]
         [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b]
           [b][color=RED]([/color][/b][b][color=BLUE]command[/color][/b] [b][color=#ff00ff]"_.break"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] x[b][color=RED])[/color][/b] [b][color=#ff00ff]"_F"[/color][/b] [b][color=#ff00ff]"_non"[/color][/b]
                    [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] x[b][color=RED])[/color][/b] [b][color=#ff00ff]"_non"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]caddr[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
     
[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] vlax-list->3D-point [b][color=RED]([/color][/b]lst[b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] lst
   [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] lst[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] lst[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]caddr[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
         [b][color=RED]([/color][/b]vlax-list->3D-point [b][color=RED]([/color][/b][b][color=BLUE]cdddr[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:test [b][color=RED]([/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b]trim_obj [b][color=RED]([/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entsel[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
           

Trimmer2.gif

 

Has some obvious limitations.

 

 

Lee

Trimmer.gif

Posted
Lee,

 

What do you mean "Hows this"? It is perfect as usual!

Thanks for all of your help. It is exactly what I was looking for.

 

Your the best!

 

Thanks, glad you like it :D

 

Lee

Posted
Thanks, glad you like it :D

 

Lee

 

You never cease to amaze me.

Posted

Lee,

 

I know I am pushing it here but I must ask.

 

My old code for inserting block/trimming out the line had code that put the coordinates into the "COORD" attribute after the block was inserted. I have tried inserting that code into the code you gave me but can't seem to get it to work.

 

Can the code you created be modified to fill out that attribute after the block is inserted into the drawing?

Posted
Please help!

I need to insert a block (Any Name) onto a Polyline then have the Polyline inside of the block removed.

 

You know you can just use the TRIM command, right? :unsure:

Or put a WIPEOUT in your block. Then you don't have to delete any lines. :wink:

Posted

No . That routine was for putting in the X, Y, Z coordinates into 2 seperate attribiutes "PT1" and "PT2".

I just need 1 attribute (COORD) filled out with the X, Y, Z coordinates.

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...