与偏移和柴对齐
是否可以制作一个lisp,该lisp将创建具有给定偏移量的路线,并放置给定米间距的链测长度。假设我有一条6000米的多段线,它是中心线。现在我必须创建一个40 mt的偏移量(即右侧20 mt,左侧20 mt),并在100 mt的间隔处放置一个tik标记。在每个间隔处,链测长度将增加100 mt。文本将显示0.0 km、0.1 km、0.2 km等。 是的,这是可能的。 怎样我来不了。 你能发布一个快照或上传一个样例图纸吗? 当然只需检查样本。。。。。。。。。这将有助于补偿:
http://lee-mac.com/doubleoffset.html
谢谢你,李。但我实际上需要具有双偏移量的链测长度。
我知道你是这样做的,但我无法证明花在自愿时间为你写整个程序上的时间是合理的。 对不起,李。我不想侮辱你。我只是告诉你我需要什么。这就是全部。 尝试此草稿。。。
(defun c:Test (/ Text o i n k j ss in l l1 l2 sn e e1 r p pt)
(vl-load-com)
;;; Tharwat 02. Sep. 2012 ;;;
(defun Text (l l1 l2 / j i pt)
(setq j 0
i 0.0
)
(repeat (fix (/ l 100.))
(entmakex (list '(0 . "TEXT")
'(40 . 10.0)
(cons 1 (strcat (rtos (setq i (+ i 0.1)) 2 1) "Km."))
(cons 10 (setq pt (nth j l1)))
(cons 11 pt)
(cons 50 (setq r (angle (nth j l1) (nth j l2))))
)
)
(setq j (1+ j))
)
)
(if (setq ss (ssget "_:L" '((0 . "LWPOLYLINE"))))
(repeat (setq in (sslength ss))
(setq o 20.
n 100.
k 100.
)
(if (> (setq l (vlax-curve-getdistatparam (setq sn (ssname ss (setq in (1- in)))) (vlax-curve-getendparam sn)))
100.
)
(progn (vla-offset (vlax-ename->vla-object sn) o)
(setq e (entlast))
(repeat (fix (/ (vlax-curve-getdistatparam e (vlax-curve-getendparam e)) 100.))
(setq l1 (cons (vlax-curve-getpointatdist e n) l1))
(setq n (+ n k))
)
(vla-offset (vlax-ename->vla-object sn) (- o))
(setq e1 (entlast))
(setq n 100.)
(repeat (fix (/ (vlax-curve-getdistatparam e1 (vlax-curve-getendparam e1)) 100.))
(setq l2 (cons (vlax-curve-getpointatdist e1 n) l2))
(setq n (+ n k))
)
(if (< (car (vlax-curve-getstartpoint sn)) (car (vlax-curve-getendpoint sn)))
(setq l1 (reverse l1)
l2 (reverse l2)
)
)
(Text l l1 l2)
(entmakex (list '(0 . "TEXT")
'(40 . 10.0)
(cons 10 (setq pt (vlax-curve-getstartpoint e)))
(cons 11 pt)
(cons 1 "0.0Km.")
(cons 50 r)
)
)
(setq e nil
i 0.0
)
)
(princ "\n Polyline is shorter than 100.0 units long !!")
)
(setq l1 nil
l2 nil
)
)
(princ)
)
(princ)
)
页:
[1]
2