乐筑天下

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

[编程交流] 获取三维Po的UCS坐标

[复制链接]

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 16:33:36 | 显示全部楼层 |阅读模式
大家好,老师们,
 
 
我是一个该死的Lisp编程初学者,我需要一种方法来让它适用于三维多段线。
 
 
基本上,它应该给我这个多段线上每个点的当前UCS坐标。
 
 
问题是,我只是学习如何在2D而不是3D中做这样的事情。。。
 
 
 
 
谢谢
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 16:39:18 | 显示全部楼层
哦,我忘了我到目前为止的文件了。。。。很抱歉
这只是一个典型的pExport文件
 
 
 
 
 
 
 
(定义c:pExport()
(setq sset(ssget’(-4)。(0。“LW多段线”)(-4。“或“>”))
(如果sset
(程序
(setq itm 0 num(sslength sset))
(setq fn(getfield“点导出文件”“”“txt”1))
(如果(/=fn nil)
(程序
(setq fh(open fn“w”))
(虽然(
(setq hnd(ssname sset itm))
(setq ent(entget hnd))
(setq obj(cdr(assoc 0 ent)))
(续)
(=obj“点”)
(setq pnt(cdr(assoc 10 ent)))
(setq pnt(trans pnt 0 1))**驾驶室
(princ(strcat(rtos(车载pnt)2“,”
(rtos(cadr pnt)2“
(rtos(caddr pnt)2)fh)
(princ“\n”fh)
)
(=obj“LWPOLYLINE”)
(如果(=(cdr(assoc 38 ent))无)
(setq elv 0.0)
(setq elv(cdr(assoc 38 ent)))
)
(foreach rec ent)
(if(=(car rec)10)
(程序
(setq pnt(cdr rec))
(setq pnt(trans pnt 0 1))**驾驶室
(princ(strcat(rtos(车载pnt)2“,”
(rtos(cadr pnt)2“
(rtos elv 2)fh)
(princ“\n”fh)
)
)
)
)
(无)
)
(setq itm(1+itm))
)
(关闭fh)
)
)
)
)
(普林斯)
)
(princ“\n点导出已加载,键入pExport以运行。”)
(普林斯)
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 16:46:37 | 显示全部楼层
我已经这么做了。问题是我需要当前UCS坐标,无法使用“trans”命令
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-5 16:48:13 | 显示全部楼层
请阅读代码发布指南,并编辑代码以包含在代码标签中。[NOPARSE]
  1. Your Code Here[/NOPARSE]
=
  1. Your Code Here
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:54:29 | 显示全部楼层
考虑以下因素:
  1. (defun c:ptx ( / d f i n s x z )
  2.    (if (and (setq s (ssget '((0 . "POINT,LWPOLYLINE"))))
  3.             (setq f (getfiled "" "" "txt" 1))
  4.        )
  5.        (if (setq d (open f "w"))
  6.            (progn
  7.                (repeat (setq i (sslength s))
  8.                    (setq x (entget (ssname s (setq i (1- i))))
  9.                          z (cdr (assoc 038 x))
  10.                          n (cdr (assoc 210 x))
  11.                    )
  12.                    (if (= "POINT" (cdr (assoc 0 x)))
  13.                        (write-line (pnt2str (trans (cdr (assoc 10 x)) 0 1)) d)
  14.                        (foreach g x
  15.                            (if (= 10 (car g))
  16.                                (write-line (pnt2str (trans (list (cadr g) (caddr g) z) n 1)) d)
  17.                            )
  18.                        )
  19.                    )
  20.                )
  21.                (close d)
  22.            )
  23.            (princ "\nUnable to open the file for writing.")
  24.        )
  25.    )
  26.    (princ)
  27. )
  28. (defun pnt2str ( p )
  29.    (if (cdr p) (strcat (rtos (car p) 2) "," (pnt2str (cdr p))) (rtos (car p) 2))
  30. )
  31. (princ)
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 16:57:40 | 显示全部楼层
谢谢你的回答,但我觉得我的问题有点理解错误。
 
 
我在3Dpolyline上没有实际的点。我需要的是顶点。
 
 
很抱歉,我是一名测量工程师,所以一切对我来说都很重要
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 17:01:51 | 显示全部楼层
只是一个顶棚:
 
LW多段线、点和3DPolyline是非常不同的实体。所以这是一条你正在处理的多段线?
 
点线3DPOLYLINEs 3DPOLYMESHes都将这些点值存储在3轴WCS坐标中。
 
-大卫
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:07:36 | 显示全部楼层
我正在处理三维多段线。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 17:13:02 | 显示全部楼层
对于真正的3DPOLYLINE,这可能会起作用:
 
  1. [b][color=BLACK]([/color][/b]defun c:3dp2ucs [b][color=FUCHSIA]([/color][/b]/ ss en ed vl vn vd wf[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"POLYLINE"[/color][b][color=BLUE])[/color][/b]
  3.                             [b][color=BLUE]([/color][/b]cons -4 [color=#2f4f4f]"&"[/color][b][color=BLUE])[/color][/b]
  4.                              [b][color=BLUE]([/color][/b]cons 70 8[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  5.       [b][color=NAVY]([/color][/b]= [b][color=MAROON]([/color][/b]sslength ss[b][color=MAROON])[/color][/b] 1[b][color=NAVY])[/color][/b]
  6.       [b][color=NAVY]([/color][/b]setq en [b][color=MAROON]([/color][/b]ssname ss 0[b][color=MAROON])[/color][/b]
  7.             ed [b][color=MAROON]([/color][/b]entget en[b][color=MAROON])[/color][/b]
  8.             vn [b][color=MAROON]([/color][/b]entnext en[b][color=MAROON])[/color][/b]
  9.             vd [b][color=MAROON]([/color][/b]entget vn[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  10.       [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]= [color=#2f4f4f]"VERTEX"[/color] [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 0 vd[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  11.              [b][color=MAROON]([/color][/b]setq vl [b][color=GREEN]([/color][/b]cons [b][color=BLUE]([/color][/b]trans [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 10 vd[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] 0 1[b][color=BLUE])[/color][/b] vl[b][color=GREEN])[/color][/b]
  12.                    vn [b][color=GREEN]([/color][/b]entnext vn[b][color=GREEN])[/color][/b]
  13.                    vd [b][color=GREEN]([/color][/b]entget vn[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  14.       [b][color=NAVY]([/color][/b]setq wf [b][color=MAROON]([/color][/b]open [color=#2f4f4f]"POINT.DAT"[/color] [color=#2f4f4f]"w"[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  15.       [b][color=NAVY]([/color][/b]foreach v [b][color=MAROON]([/color][/b]reverse vl[b][color=MAROON])[/color][/b]
  16.              [b][color=MAROON]([/color][/b]prin1 v wf[b][color=MAROON])[/color][/b]
  17.              [b][color=MAROON]([/color][/b]write-line [color=#2f4f4f]""[/color] wf[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  18.       [b][color=NAVY]([/color][/b]close wf[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  19. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
 
-大卫
-3DP。图纸
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:15:30 | 显示全部楼层
谢谢你的快速回复David,
 
 
但我无法在ucs文件中创建和写入它。
 
 
现在它变得很可笑,所以我会让我的老板派我去参加一个研讨会。
 
 
谢谢大家。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 15:48 , Processed in 1.701905 second(s), 72 queries .

© 2020-2025 乐筑天下

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