乐筑天下

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

[编程交流] Conversion 3dpoly - 2d poly -

[复制链接]

28

主题

76

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-6 08:53:55 | 显示全部楼层 |阅读模式
Hi guys,
Starting with a 3d polyline, i want to draw a 2d polyline  that will have vertices with the same z value, and the distances between  vertices will be the same as for 3d polyline... any lisp for something  like this? You can see the attached drawing... Somethig like a  "flattening" , but to keep distances between vertices ...  Thanks!
3DPOLY-2DPOLY.dwg
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:12:16 | 显示全部楼层
Is the resultant 2D LWPolyline meant to lie in the XZ-plane?
回复

使用道具 举报

28

主题

76

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-6 09:27:12 | 显示全部楼层
Sorry, is a mistake in my drawing... can be in x-y plane
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:38:28 | 显示全部楼层
Try something like this (hacked together):
 
  1. (defun c:test ( / d e l s x )   (if       (setq s           (ssget "_+.:E:S"              '(                   (0 . "POLYLINE")                   (-4 . "")               )           )       )       (progn           (setq e (ssname s 0))           (while               (eq "VERTEX"                   (cdr                       (assoc 0                           (setq d                               (entget                                   (setq e (entnext e))                               )                           )                       )                   )               )               (setq l (cons (cdr (assoc 10 d)) l))           )           (setq l (reverse l)                 x (caar l)           )           (setq l               (mapcar                   (function                       (lambda ( a b / d z p )                           (setq d (distance a b)                                 z (- (caddr a) (caddr b))                                 p (list 10 x (caddr a))                                 x (+ x (sqrt (- (* d d) (* z z))))                           )                           p                       )                   )                   l (append (cdr l) (list (car l)))               )           )           (entmakex               (append                   (list                       (cons 0 "LWPOLYLINE")                       (cons 100 "AcDbEntity")                       (cons 100 "AcDbPolyline")                       (cons 90 (length l))                       (cons 70 0)                   )                   l               )           )       )   )   (princ))
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 09:46:00 | 显示全部楼层
I've done this :
 
  1. (defun c:3dpl2dpl-unwrap ( / 3DPL 3DPLA 3DPLCOORD 3DPLPTL DX DZ K L O OSM PT PTT PTTT PTTTW SSLINES )(vl-load-com)(setq osm (getvar 'osmode))(setvar 'osmode 0)(setq 3dpl (car (entsel "\nPick 3d poly")))(setq 3dplA (vlax-ename->vla-object 3dpl))(setq 3dplcoord (vlax-safearray->list (vlax-variant-value (vla-get-Coordinates 3dplA))))(repeat (/ (length 3dplcoord) 3)(setq pt (list (car 3dplcoord) (cadr 3dplcoord) (caddr 3dplcoord)))(setq 3dplcoord (cdddr 3dplcoord))(setq 3dplptl (cons pt 3dplptl)))(setq 3dplptl (reverse 3dplptl))(setq o '(0.0 0.0 0.0))(setq sslines (ssadd))(setq k 0)(repeat (- (length 3dplptl) 1)(setq k (1+ k))(vl-cmdf "ucs" "w")(vl-cmdf "ucs" "x" 90)(if (eq k 1) (setq pt (trans (car 3dplptl) 0 1)) (setq pt (trans ptttw 0 1)))(vl-cmdf "ucs" "m" pt)(setq ptt (trans (cadr 3dplptl) 0 1))(setq l (distance (car 3dplptl) (cadr 3dplptl)))(setq dz (cadr ptt))(setq dx (sqrt (- (expt l 2) (expt dz 2))))(setq pttt (list dx dz 0.0))(setq ptttw (trans pttt 1 0))(vl-cmdf "_.line" o pttt "")(ssadd (entlast) sslines)(setq 3dplptl (cdr 3dplptl)))(vl-cmdf "_.pedit" "m" sslines "" "y" "j" "" "")(vl-cmdf "_.chprop" (entlast) "" "c" "1" "")(vl-cmdf "ucs" "w")(setvar 'osmode osm)(princ))
 
M.R.
回复

使用道具 举报

28

主题

76

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-6 10:04:30 | 显示全部楼层
Both of them are ok, thanks guys!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 05:54 , Processed in 0.386105 second(s), 64 queries .

© 2020-2025 乐筑天下

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