pBe 发表于 2022-7-6 03:20:34

 
据我所知,演示lisp将为您提供正确的长度。
 
麻烦?以什么方式CafeJr?是否一次性选择所有实体?我们可以修改代码,以识别哪些行放在哪里,如果您希望这样做的话。
 
干得好:

(Defun c:demo (/ pt ent len sp ep pt1)
(if (setq pt nil
    ss (ssget '((0 . "CIRCLE,ARC,*LINE")))
   )
   (repeat (setq i (sslength ss))
   (setq ent        (ssname ss (Setq i (1- i)))
    len        (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent))
    sp        (Vlax-curve-getstartpoint ent)
    ep        (Vlax-curve-getendpoint ent)
   )
   (if (null pt)
(setq pt (getpoint "\nPick start point:"))
   )

   (entmakex
(list (cons 0 "LINE")
      (cons 10
          (setq pt1 (list (min (Car sp) (car ep)) (cadr pt)))
      )
      (cons 11 (polar pt1 (* pi 1.5) len))
)
   )
   )
)
(princ)
)

CafeJr 发表于 2022-7-6 03:24:04

pBe,我现在不能尝试。。。明天我会做的。。。所以,问题是原始多段线的长度与创建的线不同,正如我在这里展示的第二个文件!。。。我不知道为什么会这样,所以,线条的长度与普林斯不匹配。。。

jdiala 发表于 2022-7-6 03:27:19

只要实体不重叠并水平排列,这将起作用。
 
(defun C:test (/ ss p l i d v)
(setq ss (ssget "_:L" '((0 . "CIRCLE,ARC,*OLYLINE")))
   p(getpoint "\nPick a point")
   d(getdist p "\nDistance between lines ; ")
)
(foreach x
(vl-sort
   (repeat (setq i (sslength ss))
       (setq i (1- i)
             l (cons (ssname ss i) l)
       )
   )
   (function
   (lambda (x1 x2)
       (<
         (car
         (cdr
             (assoc 10
               (entget x1)
             )
         )
         )
         (car
         (cdr
             (assoc 10
               (entget x2)
             )
         )
         )
       )
   )
   )
)
(setq v (vlax-ename->vla-object x)
       l (cond
         ((vlax-property-available-p v 'length) (vla-get-length v))
         ((vlax-property-available-p v 'circumference) (vla-get-circumference v))
         ((vlax-property-available-p v 'arclength) (vla-get-arclength v))
         )
)
(entmake
   (list
   (cons 0"LINE")
   (cons 10 p)
   (cons 11 (polar p (* pi 1.5) l))
   )
)
(setq p (polar p 0 d))
)
(princ)
)
(vl-load-com)

CafeJr 发表于 2022-7-6 03:31:17

现在它开始工作了。。。谢谢pBe和jandiala,做一个应用程序对我有很大帮助!。。。我很感激!!!。。。我在文件2上只有一行(附在另一篇帖子上),长度不太长,但没问题。。。

pBe 发表于 2022-7-6 03:32:23

 
很高兴它对你有用。
 
这一次会是什么?

CafeJr 发表于 2022-7-6 03:37:17

别担心pBe。。。你写的代码帮了我很大的忙!!!。。。那么,给你看看我在说什么见附件!。。。项目103。。。
 
再次感谢并问候。。。
 
PLs 3的长度。图纸

CafeJr 发表于 2022-7-6 03:41:25

pBe,可以在写之前检查长度吗?。。。要确认长度数据?!。。。

pBe 发表于 2022-7-6 03:43:03

 
正如jdiala所说。只要实体不重叠。简单地说,第103位有2项。实际上是135和134
 
 
 
为什么需要检查长度?该程序为您实现了这一点。

CafeJr 发表于 2022-7-6 03:47:12

 
pBe,非常感谢您的帮助!!!。。。它的工作,因为我需要好!。。。我真的很惭愧,第103项上有2个实体,因为我没有看到它!。。。好吧,我错了!。。。“检查”只是确认读取和拉出了多少物体的一种方法,这可能有助于避免它,也可能是另一个人重复同样的错误。。。
页: 1 [2]
查看完整版本: 获取长度并创建