乐筑天下

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

[编程交流] 将多段线转换为3dpolylin

[复制链接]

14

主题

47

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 09:49:16 | 显示全部楼层 |阅读模式
所有人都在那里,
 
我有一个在不同标高(z)上有许多点的图形,绘制多段线是因为它们将点与osnap节点连接在一起。现在我需要将这些多段线更改为三维多段线。
 
是否有任何lisp或VBA程序来执行此操作。
 
帮助总是被满足的。
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 09:52:52 | 显示全部楼层
试试这个lisp例程(pedit3d.lsp)。我从未使用过它,因此我无法告诉你它是否有效。
http://www.black-cad.homepage.t-online.de/pediten.htm
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:58:07 | 显示全部楼层
尝试以下操作:
 
  1. [color=#990099];;-------------=={ LWPolylines to 3D Polylines }==------------;;[/color]
  2. [color=#990099];;                                                            ;;[/color]
  3. [color=#990099];;  Converts a selection of LWPolylines to 3D Polylines.      ;;[/color]
  4. [color=#990099];;------------------------------------------------------------;;[/color]
  5. [color=#990099];;  Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;[/color]
  6. [color=#990099];;------------------------------------------------------------;;[/color]
  7. [color=RED]([/color][color=BLUE]defun[/color] c:LW3D [color=RED]([/color] [color=BLUE]/[/color] ss i elist z [color=RED])[/color] [color=RED]([/color][color=BLUE]vl-load-com[/color][color=RED])[/color]
  8. [color=#990099];; © Lee Mac 2011[/color]
  9. [color=RED]([/color][color=BLUE]if[/color] [color=RED]([/color][color=BLUE]setq[/color] ss [color=RED]([/color][color=BLUE]ssget[/color] [color=#a52a2a]"_:L"[/color] [color=DARKRED]'[/color][color=RED](([/color][color=#009900]0[/color] [color=DARKRED].[/color] [color=#a52a2a]"LWPOLYLINE"[/color][color=RED]))))[/color]
  10.    
  11.    [color=RED]([/color][color=BLUE]repeat[/color] [color=RED]([/color][color=BLUE]setq[/color] i [color=RED]([/color][color=BLUE]sslength[/color] ss[color=RED]))[/color]
  12.      [color=RED]([/color][color=BLUE]entmakex[/color]
  13.        [color=RED]([/color][color=BLUE]append[/color] [color=DARKRED]'[/color][color=RED](([/color][color=#009900]0[/color] [color=DARKRED].[/color] [color=#a52a2a]"POLYLINE"[/color][color=RED])[/color] [color=RED]([/color][color=#009900]10[/color] [color=#009999]0.[/color] [color=#009999]0.[/color] [color=#009999]0.[/color][color=RED]))[/color]
  14.          [color=RED]([/color][color=BLUE]vl-remove-if[/color]
  15.            [color=RED]([/color][color=BLUE]function[/color]
  16.              [color=RED]([/color][color=BLUE]lambda[/color] [color=RED]([/color] pair [color=RED])[/color] [color=RED]([/color][color=BLUE]member[/color] [color=RED]([/color][color=BLUE]car[/color] pair[color=RED])[/color] [color=DARKRED]'[/color][color=RED]([/color][color=#009900]0[/color] [color=#009900]10[/color] [color=#009900]38[/color] [color=#009900]40[/color] [color=#009900]41[/color] [color=#009900]42[/color] [color=#009900]43[/color] [color=#009900]90[/color] [color=#009900]91[/color] [color=#009900]100[/color][color=RED])))[/color]
  17.            [color=RED])[/color]
  18.            [color=RED]([/color][color=BLUE]setq[/color] elist [color=RED]([/color][color=BLUE]entget[/color] [color=RED]([/color][color=BLUE]setq[/color] e [color=RED]([/color][color=BLUE]ssname[/color] ss [color=RED]([/color][color=BLUE]setq[/color] i [color=RED]([/color][color=BLUE]1-[/color] i[color=RED]))))))[/color]
  19.          [color=RED])[/color]     
  20.        [color=RED])[/color]
  21.      [color=RED])[/color]
  22.      [color=RED]([/color][color=BLUE]setq[/color] z [color=RED]([/color][color=BLUE]list[/color] [color=RED]([/color][color=BLUE]cdr[/color] [color=RED]([/color][color=BLUE]assoc[/color] [color=#009900]38[/color] elist[color=RED]))))[/color]
  23.      
  24.      [color=RED]([/color][color=BLUE]while[/color] [color=RED]([/color][color=BLUE]setq[/color] elist [color=RED]([/color][color=BLUE]member[/color] [color=RED]([/color][color=BLUE]assoc[/color] [color=#009900]10[/color] elist[color=RED])[/color] elist[color=RED]))[/color]
  25.        [color=RED]([/color][color=BLUE]entmakex[/color]
  26.          [color=RED]([/color][color=BLUE]list[/color]
  27.            [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]0[/color] [color=#a52a2a]"VERTEX"[/color][color=RED])[/color]
  28.            [color=RED]([/color][color=BLUE]append[/color] [color=RED]([/color][color=BLUE]assoc[/color] [color=#009900]10[/color] elist[color=RED])[/color] z[color=RED])[/color]
  29.            [color=RED]([/color][color=BLUE]assoc[/color] [color=#009900]40[/color] elist[color=RED])[/color]
  30.            [color=RED]([/color][color=BLUE]assoc[/color] [color=#009900]41[/color] elist[color=RED])[/color]
  31.            [color=RED]([/color][color=BLUE]assoc[/color] [color=#009900]42[/color] elist[color=RED])[/color]
  32.          [color=RED])[/color]
  33.        [color=RED])[/color]
  34.        [color=RED]([/color][color=BLUE]setq[/color] elist [color=RED]([/color][color=BLUE]cdr[/color] elist[color=RED]))[/color]
  35.      [color=RED])[/color]
  36.      [color=RED]([/color][color=BLUE]entmakex[/color] [color=DARKRED]'[/color][color=RED](([/color][color=#009900]0[/color] [color=DARKRED].[/color] [color=#a52a2a]"SEQEND"[/color][color=RED])))[/color] [color=RED]([/color][color=BLUE]entdel[/color] e[color=RED])[/color]
  37.    [color=RED])[/color]
  38. [color=RED])[/color]
  39. [color=RED]([/color][color=BLUE]princ[/color][color=RED])[/color]
  40. [color=RED])[/color]
回复

使用道具 举报

29

主题

519

帖子

477

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
163
发表于 2022-7-6 10:01:18 | 显示全部楼层
如果您使用的是Civil 3D,则有一个执行此操作的命令。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 10:03:07 | 显示全部楼层
你是说现有的多段线已经有不同的Z值了吗?或者它们只是具有正确XY值的2D?据我所知,LWDOLYLINE不能有变化的Z值。另一种选择是,如果现有的LWWPolyline具有其UCS旋转-David
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:06:18 | 显示全部楼层
 
这就是我所想的-所以我选择了假设正确的XY值并使用高程[DXF38]作为Z。。。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 10:10:25 | 显示全部楼层
 
我假设OP是说每个点在Z轴上都是不同的????
 
哦,好吧,大卫
回复

使用道具 举报

8

主题

1133

帖子

1164

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 10:12:52 | 显示全部楼层
 
请澄清一下,对于lisp中的达夫,您正在从与顶点具有相同x、y值的点检索z值。
 
据我所知,最初的文章是通过捕捉到三维点来绘制多段线的。多段线将捕捉到第一个节点的z值。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:19:00 | 显示全部楼层
据我所知,OP使用的是LWpolyline,它必须位于某个高程的单个平面上。长波多段线的顶点坐标表示为该高程的二维OCS点。高程存储在别处[DXF 38]。
 
我的代码使用LWPolyline高程作为三维多段线中每个坐标的Z值,因此三维多段线与LWPolyline相同。如果这不是要求的,我认为OP需要进一步解释。
 
我不太擅长解释我的意思,但我希望这能澄清问题!
回复

使用道具 举报

8

主题

1133

帖子

1164

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 10:21:57 | 显示全部楼层
我认为OP错误地绘制了一条普通的LW多段线,捕捉到了先前在图形中的“点”。他可能应该首先使用三维多段线来绘制它们,然后使用魔杖将他的LW多段线转换为三维多段线,而无需再次绘制它们。
 
我想知道如何在lisp中检索z值,并将其自身附加到正确的顶点以生成所需的三维多段线,因为显然现有LWMOLYLINE的z值不符合要求。
 
也许我们把自己搞糊涂了,需要OP来澄清问题
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 00:31 , Processed in 1.072368 second(s), 72 queries .

© 2020-2025 乐筑天下

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