ccowgill
2007-10-15, 05:21 PM
could someone please post an example of how to use vla-addpolyline. I mostly need the formating for the list of points. I am passing points to the polyline but I keep getting errors. right now, my code just draws 3 separate lines, but I would like to shorten it up.
here is my current program:
(defun c:waterbracket (/ obj objent objentdata objdir itm xobj yobj hobj wobjhorz1 horz2 vert1)
(prompt "\nSelect Mtext object and leader\n")
(setq obj (ssget)
objent (ssname obj 0)
objentdata (entget objent)
) ;_ select object
(if (equal (assoc 0 objentdata) '(0 . "LEADER"))
(progn
(if (equal (cadr (assoc 213 objentdata)) 0.0)
(setq objdir "right")
(setq objdir "left")
)
(setq objent (ssname obj 1)
objentdata (entget objent)
)
)
(progn
(setq objent (ssname obj 1)
objentdata (entget objent)
)
(if (equal (cadr (assoc 213 objentdata)) 0.0)
(setq objdir "right")
(setq objdir "left")
)
(setq objent (ssname obj 0)
objentdata (entget objent)
)
)
)
(if (/= (equal (assoc 73 objentdata) '(73 . 2)) t)
(progn
(setq objentdata
(subst '(73 . 2) (assoc 73 objentdata) objentdata)
)
(entmod objentdata)
)
)
(foreach itm objentdata
(cond ((= (car itm) 10) ;_ get insert point
(setq yobj (cadr (cdr itm))
xobj (car (cdr itm))
)
)
((= (car itm) 43)
(setq hobj (cdr itm))
)
((= (car itm) 42)
(setq wobj (cdr itm))
)
)
)
(if (= objdir "left")
(progn
(setq horz1
(vla-addline
acadPaperSpace
(vlax-3d-point
(list (- (+ xobj wobj) 0.04) (+ yobj 0.04) 0)
) ;_ end of vlax-3d-point
(vlax-3d-point
(list (+ (+ xobj wobj) 0.04) (+ yobj 0.04) 0)
) ;_ end of vlax-3d-point
) ;_ end of vla-addline
vert1 (vla-addline
acadPaperSpace
(vlax-3d-point
(list (+ (+ xobj wobj) 0.04) (+ yobj 0.04) 0)
) ;_ end of vlax-3d-point
(vlax-3d-point
(list (+ (+ xobj wobj) 0.04) (- yobj hobj) 0)
) ;_ end of vlax-3d-point
) ;_ end of vla-addline
horz2 (vla-addline
acadPaperSpace
(vlax-3d-point
(list (+ (+ xobj wobj) 0.04) (- yobj hobj) 0)
) ;_ end of vlax-3d-point
(vlax-3d-point
(list (- (+ xobj wobj) 0.04) (- yobj hobj) 0)
) ;_ end of vlax-3d-point
) ;_ end of vla-addline
) ;_ end of setq
(vla-put-layer vert1 "Dim")
(vla-put-layer horz1 "Dim")
(vla-put-layer horz2 "Dim")
)
)
(if (= objdir "right")
(progn
(setq horz1
(vla-addline
acadPaperSpace
(vlax-3d-point
(list (+ xobj 0.04) (+ yobj (/ 2. 75)) 0)
) ;_ end of vlax-3d-point
(vlax-3d-point
(list (- xobj 0.04) (+ yobj (/ 2. 75)) 0)
) ;_ end of vlax-3d-point
) ;_ end of vla-addline
vert1 (vla-addline
acadPaperSpace
(vlax-3d-point
(list (- xobj 0.04) (+ yobj (/ 2. 75)) 0)
) ;_ end of vlax-3d-point
(vlax-3d-point
(list (- xobj 0.04) (- yobj hobj) 0)
) ;_ end of vlax-3d-point
) ;_ end of vla-addline
horz2 (vla-addline
acadPaperSpace
(vlax-3d-point
(list (- xobj 0.04) (- yobj hobj) 0)
) ;_ end of vlax-3d-point
(vlax-3d-point
(list (+ xobj 0.04) (- yobj hobj) 0)
) ;_ end of vlax-3d-point
) ;_ end of vla-addline
) ;_ end of setq
(vla-put-layer vert1 "Dim")
(vla-put-layer horz1 "Dim")
(vla-put-layer horz2 "Dim")
)
)
;add 2/75 to y coord dxf 10
;add .04 to x coord dxf 10
;get height of object dxf 43
;draw polyline x-.08 down height + 2/75 x+.08
)
Thanks,
here is my current program:
(defun c:waterbracket (/ obj objent objentdata objdir itm xobj yobj hobj wobjhorz1 horz2 vert1)
(prompt "\nSelect Mtext object and leader\n")
(setq obj (ssget)
objent (ssname obj 0)
objentdata (entget objent)
) ;_ select object
(if (equal (assoc 0 objentdata) '(0 . "LEADER"))
(progn
(if (equal (cadr (assoc 213 objentdata)) 0.0)
(setq objdir "right")
(setq objdir "left")
)
(setq objent (ssname obj 1)
objentdata (entget objent)
)
)
(progn
(setq objent (ssname obj 1)
objentdata (entget objent)
)
(if (equal (cadr (assoc 213 objentdata)) 0.0)
(setq objdir "right")
(setq objdir "left")
)
(setq objent (ssname obj 0)
objentdata (entget objent)
)
)
)
(if (/= (equal (assoc 73 objentdata) '(73 . 2)) t)
(progn
(setq objentdata
(subst '(73 . 2) (assoc 73 objentdata) objentdata)
)
(entmod objentdata)
)
)
(foreach itm objentdata
(cond ((= (car itm) 10) ;_ get insert point
(setq yobj (cadr (cdr itm))
xobj (car (cdr itm))
)
)
((= (car itm) 43)
(setq hobj (cdr itm))
)
((= (car itm) 42)
(setq wobj (cdr itm))
)
)
)
(if (= objdir "left")
(progn
(setq horz1
(vla-addline
acadPaperSpace
(vlax-3d-point
(list (- (+ xobj wobj) 0.04) (+ yobj 0.04) 0)
) ;_ end of vlax-3d-point
(vlax-3d-point
(list (+ (+ xobj wobj) 0.04) (+ yobj 0.04) 0)
) ;_ end of vlax-3d-point
) ;_ end of vla-addline
vert1 (vla-addline
acadPaperSpace
(vlax-3d-point
(list (+ (+ xobj wobj) 0.04) (+ yobj 0.04) 0)
) ;_ end of vlax-3d-point
(vlax-3d-point
(list (+ (+ xobj wobj) 0.04) (- yobj hobj) 0)
) ;_ end of vlax-3d-point
) ;_ end of vla-addline
horz2 (vla-addline
acadPaperSpace
(vlax-3d-point
(list (+ (+ xobj wobj) 0.04) (- yobj hobj) 0)
) ;_ end of vlax-3d-point
(vlax-3d-point
(list (- (+ xobj wobj) 0.04) (- yobj hobj) 0)
) ;_ end of vlax-3d-point
) ;_ end of vla-addline
) ;_ end of setq
(vla-put-layer vert1 "Dim")
(vla-put-layer horz1 "Dim")
(vla-put-layer horz2 "Dim")
)
)
(if (= objdir "right")
(progn
(setq horz1
(vla-addline
acadPaperSpace
(vlax-3d-point
(list (+ xobj 0.04) (+ yobj (/ 2. 75)) 0)
) ;_ end of vlax-3d-point
(vlax-3d-point
(list (- xobj 0.04) (+ yobj (/ 2. 75)) 0)
) ;_ end of vlax-3d-point
) ;_ end of vla-addline
vert1 (vla-addline
acadPaperSpace
(vlax-3d-point
(list (- xobj 0.04) (+ yobj (/ 2. 75)) 0)
) ;_ end of vlax-3d-point
(vlax-3d-point
(list (- xobj 0.04) (- yobj hobj) 0)
) ;_ end of vlax-3d-point
) ;_ end of vla-addline
horz2 (vla-addline
acadPaperSpace
(vlax-3d-point
(list (- xobj 0.04) (- yobj hobj) 0)
) ;_ end of vlax-3d-point
(vlax-3d-point
(list (+ xobj 0.04) (- yobj hobj) 0)
) ;_ end of vlax-3d-point
) ;_ end of vla-addline
) ;_ end of setq
(vla-put-layer vert1 "Dim")
(vla-put-layer horz1 "Dim")
(vla-put-layer horz2 "Dim")
)
)
;add 2/75 to y coord dxf 10
;add .04 to x coord dxf 10
;get height of object dxf 43
;draw polyline x-.08 down height + 2/75 x+.08
)
Thanks,