乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: CafeJr

[编程交流] 获取长度并创建

[复制链接]
pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 03:20:34 | 显示全部楼层
 
据我所知,演示lisp将为您提供正确的长度。
 
麻烦?以什么方式CafeJr?是否一次性选择所有实体?我们可以修改代码,以识别哪些行放在哪里,如果您希望这样做的话。
 
干得好:
  1. (Defun c:demo (/ pt ent len sp ep pt1)
  2. (if (setq pt nil
  3.     ss (ssget '((0 . "CIRCLE,ARC,*LINE")))
  4.      )
  5.    (repeat (setq i (sslength ss))
  6.      (setq ent        (ssname ss (Setq i (1- i)))
  7.     len        (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent))
  8.     sp        (Vlax-curve-getstartpoint ent)
  9.     ep        (Vlax-curve-getendpoint ent)
  10.      )
  11.      (if (null pt)
  12. (setq pt (getpoint "\nPick start point:"))
  13.      )
  14.      (entmakex
  15. (list (cons 0 "LINE")
  16.       (cons 10
  17.             (setq pt1 (list (min (Car sp) (car ep)) (cadr pt)))
  18.       )
  19.       (cons 11 (polar pt1 (* pi 1.5) len))
  20. )
  21.      )
  22.    )
  23. )
  24. (princ)
  25. )
回复

使用道具 举报

27

主题

182

帖子

163

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
139
发表于 2022-7-6 03:24:04 | 显示全部楼层
pBe,我现在不能尝试。。。明天我会做的。。。所以,问题是原始多段线的长度与创建的线不同,正如我在这里展示的第二个文件!。。。我不知道为什么会这样,所以,线条的长度与普林斯不匹配。。。
回复

使用道具 举报

0

主题

99

帖子

99

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 03:27:19 | 显示全部楼层
只要实体不重叠并水平排列,这将起作用。
 
  1. (defun C:test (/ ss p l i d v)
  2. (setq ss (ssget "_:L" '((0 . "CIRCLE,ARC,*OLYLINE")))
  3.      p  (getpoint "\nPick a point")
  4.      d  (getdist p "\nDistance between lines ; ")
  5. )
  6. (foreach x
  7. (vl-sort
  8.    (repeat (setq i (sslength ss))
  9.        (setq i (1- i)
  10.              l (cons (ssname ss i) l)
  11.        )
  12.    )
  13.    (function
  14.      (lambda (x1 x2)
  15.        (<
  16.          (car
  17.            (cdr
  18.              (assoc 10
  19.                (entget x1)
  20.              )
  21.            )
  22.          )
  23.          (car
  24.            (cdr
  25.              (assoc 10
  26.                (entget x2)
  27.              )
  28.            )
  29.          )
  30.        )
  31.      )
  32.    )
  33. )
  34. (setq v (vlax-ename->vla-object x)
  35.        l (cond
  36.            ((vlax-property-available-p v 'length) (vla-get-length v))
  37.            ((vlax-property-available-p v 'circumference) (vla-get-circumference v))
  38.            ((vlax-property-available-p v 'arclength) (vla-get-arclength v))
  39.          )
  40. )
  41. (entmake
  42.    (list
  43.      (cons 0  "LINE")
  44.      (cons 10 p)
  45.      (cons 11 (polar p (* pi 1.5) l))
  46.    )  
  47. )
  48. (setq p (polar p 0 d))
  49. )
  50. (princ)
  51. )
  52. (vl-load-com)
回复

使用道具 举报

27

主题

182

帖子

163

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
139
发表于 2022-7-6 03:31:17 | 显示全部楼层
现在它开始工作了。。。谢谢pBe和jandiala,做一个应用程序对我有很大帮助!。。。我很感激!!!。。。我在文件2上只有一行(附在另一篇帖子上),长度不太长,但没问题。。。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 03:32:23 | 显示全部楼层
 
很高兴它对你有用。
 
这一次会是什么?
回复

使用道具 举报

27

主题

182

帖子

163

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
139
发表于 2022-7-6 03:37:17 | 显示全部楼层
别担心pBe。。。你写的代码帮了我很大的忙!!!。。。那么,给你看看我在说什么见附件!。。。项目103。。。
 
再次感谢并问候。。。
 
PLs 3的长度。图纸
回复

使用道具 举报

27

主题

182

帖子

163

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
139
发表于 2022-7-6 03:41:25 | 显示全部楼层
pBe,可以在写之前检查长度吗?。。。要确认长度数据?!。。。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 03:43:03 | 显示全部楼层
 
正如jdiala所说。只要实体不重叠。简单地说,第103位有2项。实际上是135和134
 
 
 
为什么需要检查长度?该程序为您实现了这一点。
回复

使用道具 举报

27

主题

182

帖子

163

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
139
发表于 2022-7-6 03:47:12 | 显示全部楼层
 
pBe,非常感谢您的帮助!!!。。。它的工作,因为我需要好!。。。我真的很惭愧,第103项上有2个实体,因为我没有看到它!。。。好吧,我错了!。。。“检查”只是确认读取和拉出了多少物体的一种方法,这可能有助于避免它,也可能是另一个人重复同样的错误。。。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 22:28 , Processed in 0.502499 second(s), 69 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表