乐筑天下

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

[编程交流] 横截面到3d

[复制链接]

2

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 08:39:04 | 显示全部楼层 |阅读模式
你好
 
我想创建一个程序,将2d横截面转换为3dpoint Entytes,将其放置在平面上的横截面轴上。
 
首先,我创建新的ucs原点,使顶点x=3dpoint xvalue;y=3点Z值;
 
现在我开始编程:
 
 
 
  1. ;;a) First I get 2d cross section polyline vertex points from polyline.
  2. (vl-load-com)
  3. (setq acadObject (vlax-get-acad-object))
  4. (and
  5. (setq theobj (car (entsel "\nSelect a Polyline: ")))
  6. (setq theobj (vlax-ename->vla-object theobj))
  7. (eq (vlax-get-property theobj 'ObjectName) "AcDbPolyline")
  8. (setq thelist (vlax-get theobj 'coordinates))
  9. ;;b) converting point coordinates from wsc to currentucs
  10. (setq n 0)
  11. (while (/= (nth n thelist) nil)
  12.    (setq thelist1
  13.       (cons
  14.         (trans
  15.           (list (nth n thelist) (nth (setq n (1+ n)) thelist))
  16.           0
  17.           1
  18.         )                ;end trans
  19.         thelist1
  20.       )                ;end cons
  21.    )                    ;end setq
  22.    (setq n (1+ n))
  23. )                    ;end while
  24. )
  25. ;;c) Rotateing ucs - determinig crosssecton axe
  26. (setq t1 (getpoint "\nOdaberite ishosište koordinatnog sustava"))
  27. (setq t2 (getpoint "\nKliknite na točku na pozitivnoj strani"))
  28.                    ;(vl-cmdf -.UCS "w")
  29. (setq ms (vla-get-modelspace
  30.       (vla-get-ActiveDocument
  31.         (vlax-get-acad-object)
  32.       )
  33.     )
  34. )
  35. (setq lin1 (vla-addline
  36.         ms
  37.         (vlax-3d-point (trans t1 1 0))
  38.         (vlax-3d-point (trans t2 1 0))
  39.       )
  40. )
  41. (setq lin (vlax-vla-object->ename lin1))
  42. (princ)
  43.                    ;(command "._UCS" "e" lin)
  44. (vl-cmdf "._UCS" "e" lin)
  45. (entdel lin)
  46. ;;d) drawing points
  47. (setq n 0)
  48. (while (/= (nth n thelist1) nil)
  49. (setq    toc
  50.     (trans
  51.       (list (nth n thelist1) (nth (setq n (1+ n)) thelist1))
  52.       1
  53.       0
  54.     )                ;end trans
  55. )                    ;end setq  
  56. (vla-addpoint ms
  57.    (vlax-3d-point (list (nth 0 toc) 0.0 (nth 1 toc)))
  58. )
  59. )
  60. (setq toc nil)
  61. (setq n (1+ n))
  62. )                    ;end while
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 09:06:17 | 显示全部楼层
修改您的帖子。。。阅读此
回复

使用道具 举报

2

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 09:10:51 | 显示全部楼层
对不起,我修改了。
 
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 09:36:11 | 显示全部楼层
有一种更简单的方法可以做到这一点,如果你阻止pline,将其重新缩放到1:1,然后分解并使用rotate3d垂直站立,那么xyz一次就正确了。
回复

使用道具 举报

2

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 09:52:50 | 显示全部楼层
是的,但我在Autolisp中是如何做到的???
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 08:45 , Processed in 0.820758 second(s), 73 queries .

© 2020-2025 乐筑天下

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