Testing something at moment but its not on priority list using known line type values like "dashed" its drawing individual lines as 1st step for a rectang. I have the offset to rectang code already.
This works but only for lines at moment as a test program so explode pline 1st. It only supports 2 linetype variables some have 4.
Its just step one no arcs supported.
Code:
; convert linetype to lines. April 2020
; By Alan info@alanh.com.au
; *DASHED,Dashed __ __ __ __ __ __ __ __ __ __ __ __ __ _
; A,.5,-.25
; *DASHED2,Dashed (.5x) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
; A,.25,-.125
; *DASHEDX2,Dashed (2x) ____ ____ ____ ____ ____ ___
; A,1.0,-.5
;*DASHEDX2,Dashed (2x) ____ ____ ____ ____ ____ ___
; A,1.0,-.5
; *HIDDEN,Hidden __ __ __ __ __ __ __ __ __ __ __ __ __ __
; A,.25,-.125
; *HIDDEN2,Hidden (.5x) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
; A,.125,-.0625
; *HIDDENX2,Hidden (2x) ____ ____ ____ ____ ____ ____ ____
; A,.5,-.25
(defun c:convlt ( / obj lt lts end start num num2 num3 addbit pt1 pt2 oldsnap oldlay)
(defun exitnow ()
(alert "non suppoted line type\n \nwill now exit")
(exit)
)
(setq oldsnap (getvar 'osmode)
oldlay (getvar 'clayer))
(setq obj (vlax-ename->vla-object (car (entsel "Pick dashed line object "))))
(setq glts (getvar 'ltscale))
(setq lt (vlax-get Obj 'Linetype)
lts (* (vlax-get Obj 'LinetypeScale) glts)
endpt (vlax-get Obj 'EndPoint)
startpt (vlax-get Obj 'StartPoint)
dist (distance startpt endpt)
ang (angle startpt endpt))
(setvar 'clayer (vla-get-layer obj))
(cond
((= lt "DASHED")(setq l1 (* 0.5 lts) l2 (* 0.25 lts)))
((= lt "DASHED2")(setq l1 (* 0.25 lts) l2 (* 0.125 lts)))
((= lt "DASHEDX2")(setq l1 (* 1.0 lts) l2 (* 0.5 lts)))
((= lt "HIDDEN")(setq l1 (* 0.25 lts) l2 (* 0.125 lts)))
((= lt "HIDDEN2")(setq l1 (* 0.125 lts) l2 (* 0.0625 lts)))
((= lt "HIDDENX2")(setq l1 (* 0.5 lts) l2 (* 0.25 lts)))
((exitnow))
)
(vla-delete obj)
(setq seg (+ l1 l2)
num (/ dist seg)
num2 (fix num)
num3 (- num (fix num))
)
(if (> num3 0.5)
(setq addbit (/ (- dist (+ l1(* num2 seg))) 2.0))
(setq addbit (/ (- dist (+ l1 (* num2 seg))) 2.0))
)
(setvar 'osmode 0)
(setq pt1 (polar startpt ang (+ l1 addbit)))
(command "line" startpt pt1 "" "chprop" "last" "" "Lt" "continuous" "")
(repeat (- num2 1)
(setq pt1 (polar pt1 ang l2))
(setq pt2 (polar pt1 ang l1))
(command "line" pt1 pt2 "" "chprop" "last" "" "Lt" "continuous" "")
(setq pt1 pt2)
)
(setq pt1 (polar pt1 ang l2))
(command "line" pt1 endpt "" "chprop" "last" "" "Lt" "continuous" "")
(setvar 'osmode oldsnap)
(setvar 'clayer oldlay)
(princ)
)
(c:convlt)