The Buzzard Posted July 17, 2009 Posted July 17, 2009 Try the code on post 33. The insertion point on that code is on the left side of the block. Quote
Lee Mac Posted July 18, 2009 Posted July 18, 2009 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. Quote
cabltv1 Posted July 18, 2009 Author Posted July 18, 2009 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? Old code: (command "-insert" "C:/Program Files/directory/blocks/dt_2tap" "s" "1" pause pause "23" "" "" "" "" "") Quote
Lee Mac Posted July 18, 2009 Posted July 18, 2009 The old code rotated the block to zero degrees I see - would you rather the attribute was rotated separately? Quote
cabltv1 Posted July 18, 2009 Author Posted July 18, 2009 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. Quote
Lee Mac Posted July 18, 2009 Posted July 18, 2009 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? Quote
Lee Mac Posted July 18, 2009 Posted July 18, 2009 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)) Quote
CAB Posted July 18, 2009 Posted July 18, 2009 Food for thought. http://forums.cadalyst.com/showthread.php?p=20949#post20949 Quote
Lee Mac Posted July 18, 2009 Posted July 18, 2009 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 Quote
cabltv1 Posted July 18, 2009 Author Posted July 18, 2009 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! Quote
cabltv1 Posted July 18, 2009 Author Posted July 18, 2009 CAB, Thanks for the input. I will check it out. Quote
Lee Mac Posted July 18, 2009 Posted July 18, 2009 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] Has some obvious limitations. Lee Quote
Lee Mac Posted July 18, 2009 Posted July 18, 2009 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 Lee Quote
The Buzzard Posted July 18, 2009 Posted July 18, 2009 Thanks, glad you like it Lee You never cease to amaze me. Quote
cabltv1 Posted July 18, 2009 Author Posted July 18, 2009 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? Quote
Lee Mac Posted July 18, 2009 Posted July 18, 2009 Not a problem, are you referring to the LCoord program? Quote
Cad64 Posted July 18, 2009 Posted July 18, 2009 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? Or put a WIPEOUT in your block. Then you don't have to delete any lines. :wink: Quote
cabltv1 Posted July 19, 2009 Author Posted July 19, 2009 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. Quote
Recommended Posts
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.