乐筑天下

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

[编程交流] 将测量地物转换为p

[复制链接]

9

主题

27

帖子

20

银币

初来乍到

Rank: 1

铜币
48
发表于 2022-7-5 16:32:13 | 显示全部楼层 |阅读模式
我正在寻找一个lisp,它将允许我将测量地物转换为平面多段线。目前,我必须选择它们分解,这使三维多段线,然后转换为二维多段线。然后使用“展平”命令。我试着制作一个使用(command“\u explode”)和(command“\u flatten”)的lisp,但很难让它们正常工作。有人有什么建议吗?
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

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

铜币
362
发表于 2022-7-5 16:46:51 | 显示全部楼层
IIRC,不能将参数传递给flatten命令,因为它是用lisp本身定义的。
 
C3D命令“三维到二维多段线”在某种程度上起作用,但它不会将项目移动到0.0高程。
 
从这里开始。显然没有错误检查。
 
  1. (defun c:foo ()
  2. (setq ent (car (entsel "\nSelect Figure")))
  3. (vl-cmdf "explode" ent)
  4. (vl-cmdf "CONVERT3DPOLYS" "_L" "")
  5. )

 
我想你可以用(c:flatten)结束这个例程,然后手动完成。
也可以将分解设置为在选择集中循环,然后展平整个选择集。
有很多方法可以解决这个问题。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:52:47 | 显示全部楼层
另一种方法是检索三维组件,并使新pline擦除旧pline。
这未经测试
  1. ; pline co-ords example
  2. ; By Alan H
  3. (defun getcoords (ent)
  4. (vlax-safearray->list
  5.    (vlax-variant-value
  6.      (vlax-get-property
  7.    (vlax-ename->vla-object ent)
  8.    "Coordinates"
  9.      )
  10.    )
  11. )
  12. )
  13. (defun co-ords2xy ()
  14. ; convert now to a list of xy as co-ords are x y x y x y if 3d x y z x y z
  15. (setq len (length co-ords))
  16. (setq numb (/ len 2)) ; even and odd check required if frac is 0.5 then its odd has Z
  17. (setq I 0)
  18. (repeat numb
  19. (setq xy (list (nth i co-ords)(nth (+ I 1) co-ords) ))
  20. ; odd (setq xy (list (nth i co-ords)(nth (+ I 1) co-ords)(nth (+ I 2) co-ords) ))
  21. (setq co-ordsxy (cons xy co-ordsxy))
  22. (setq I (+ I 2))
  23. )
  24. )
  25. ; program starts here
  26. (setq co-ords (getcoords (car (entsel "\nplease pick pline"))))
  27. (co-ords2xy) ; list of 2d points making pline
  28. (command "_pline")
  29. (repeat (setq x (length co-ordsxy))
  30. (setq xy (nth (setq x (- x1)) co-ordsxy))
  31. (command (list (nth 0 co-ordsxy)(nth 1 co-ordsxy)))
  32. )
回复

使用道具 举报

4

主题

78

帖子

74

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 16:58:46 | 显示全部楼层
分解为三维多段线的缺点是没有任何曲线段。我们的程序不是创建矩形,而是在临时曲面中创建一条折线。设置测量地物的高程以匹配临时曲面(0),分解要素线,使其成为二维。擦除曲面和矩形。我不确定这可以用lisp实现,因为它需要太多的交互。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:04:36 | 显示全部楼层
看看李的网站,他有一个伟大的普林尼例程,包括凸信息。凸起的一个特点是,在3d中,它是一个平面答案,有时在前后线的平面上,因此当转换为2d时,半径可能有所不同。有点难以解释。强制凸出点为z=0.0可以使其成为凸出。
 
此外,CIV3D不支持弧,因为特征线有趣,我们有20年历史的软件会询问你想要多少面作为断线中的弧,通常CIV3D远远落后。
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

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

铜币
260
发表于 2022-7-5 17:13:04 | 显示全部楼层
 
祝贺你的第一个帖子!什么样的调查数据,你打算用它们做什么?AutoCAD的每个问题通常都有几种解决方案。这些数字可以提取吗?
回复

使用道具 举报

9

主题

27

帖子

20

银币

初来乍到

Rank: 1

铜币
48
发表于 2022-7-5 17:22:37 | 显示全部楼层
这是伟大的,我不知道扁平是它自己的Lisp程序。能够减少按钮点击是救命稻草。这很有帮助,谢谢。
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

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

铜币
362
发表于 2022-7-5 17:26:09 | 显示全部楼层
 
我认为OP在最初的帖子中回答了这个问题。
 
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

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

铜币
260
发表于 2022-7-5 17:32:31 | 显示全部楼层
 
数字是可编辑的,因为这是一个新手海报,他们可能是相当新的公民。对于他们想要实现的目标,可能有一个非常简单的解决方案。
 
aawilds什么类型的测量地物,您将使用多段线做什么?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-2 14:42 , Processed in 0.507168 second(s), 70 queries .

© 2020-2025 乐筑天下

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