souvik 发表于 2022-7-6 07:34:55

与偏移和柴对齐

是否可以制作一个lisp,该lisp将创建具有给定偏移量的路线,并放置给定米间距的链测长度。假设我有一条6000米的多段线,它是中心线。现在我必须创建一个40 mt的偏移量(即右侧20 mt,左侧20 mt),并在100 mt的间隔处放置一个tik标记。在每个间隔处,链测长度将增加100 mt。文本将显示0.0 km、0.1 km、0.2 km等。

Organic 发表于 2022-7-6 07:42:36

是的,这是可能的。

souvik 发表于 2022-7-6 07:46:48

怎样我来不了。

Tharwat 发表于 2022-7-6 07:51:42

你能发布一个快照或上传一个样例图纸吗?

souvik 发表于 2022-7-6 08:00:32

当然只需检查样本。。。。。。。。。

Lee Mac 发表于 2022-7-6 08:05:39

这将有助于补偿:
 
http://lee-mac.com/doubleoffset.html

souvik 发表于 2022-7-6 08:09:10

 
谢谢你,李。但我实际上需要具有双偏移量的链测长度。

Lee Mac 发表于 2022-7-6 08:18:13

 
我知道你是这样做的,但我无法证明花在自愿时间为你写整个程序上的时间是合理的。

souvik 发表于 2022-7-6 08:22:00

对不起,李。我不想侮辱你。我只是告诉你我需要什么。这就是全部。

Tharwat 发表于 2022-7-6 08:25:32

尝试此草稿。。。
 

(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
查看完整版本: 与偏移和柴对齐