乐筑天下

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

[编程交流] Lisp沿z a移动对象

[复制链接]

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 16:57:05 | 显示全部楼层
嗨Roy_04。
当我选择洋红色线时出错。
 
“选择洋红色线:;错误:错误参数类型:2D/3D点:(-1388.12 3.70499e-013 1668.58-791.629 5.12511e-013 2308.15)
 
如何解决这个问题?
 
谢谢
致以诚挚的问候!
170912vijc9xjzhrhdrjr5.jpg
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 17:01:40 | 显示全部楼层
该线只能与每条多段线有一个交点。
请检查代码是否适用于Frames_2。dwg并发布新的dwg。
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:05:31 | 显示全部楼层
具有Frames_2的代码正在工作。但当我尝试在同样的情况下工作时,它是无效的。
我尝试将帧保持在x0y上,并沿轴0z移动,然后旋转。
但也有错误。
 
你能看一下这幅画吗
 
谢谢
致以诚挚的问候!
图纸3.dwg
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 17:09:31 | 显示全部楼层
当涉及到截面的三维对齐时,您的图形不一致。但新代码将处理第一个和最后一个图形。
 
在上一个图形中,有两个截面是闭合多段线。必须更仔细地拾取临时线的点,以避免它们相交两次。
 
下面是新代码。
代码将绘制(并删除)临时线。
仅移动红色多段线。
 
  1. (defun KGA_Conv_Pickset_To_ObjectList (ss / i ret)
  2. (if ss
  3.    (repeat (setq i (sslength ss))
  4.      (setq ret (cons (vlax-ename->vla-object (ssname ss (setq i (1- i)))) ret))
  5.    )
  6. )
  7. )
  8. (defun c:Test ( / cur doc end errCnt inc lnObj ss sta vec)
  9. (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  10. (vla-endundomark doc)
  11. (vla-startundomark doc)
  12. (if
  13.    (and
  14.      (setq sta (getpoint "\nStart point of temporary line (line may intersect every polyline only once!): "))
  15.      (setq end (getpoint sta "\nEnd point of temporary line: "))
  16.      (setq ss (ssget "_F" (list sta end) '((0 . "LWPOLYLINE") (62 . 1))))
  17.      (setq inc (getreal "\nDistance between sections: "))
  18.    )
  19.    (progn
  20.      (setq ss (KGA_Conv_Pickset_To_ObjectList ss))
  21.      (setq errCnt 0)
  22.      (setq vec (trans (list 0.0 0.0 (- inc)) 0 (vlax-get (car ss) 'normal))) ; Use the normal of the first object in ss.
  23.      (setq cur '(0.0 0.0 0.0))
  24.      (setq lnObj (vlax-invoke (vla-get-modelspace doc) 'addline (setq sta (trans sta 1 0)) (trans end 1 0)))
  25.      (foreach
  26.        plObj
  27.        (mapcar
  28.          'cadr
  29.          (vl-sort
  30.            (vl-remove
  31.              nil
  32.              (mapcar
  33.                '(lambda (plObj / coordLst)
  34.                  (setq coordLst (vlax-invoke lnObj 'intersectwith plObj acextendnone))
  35.                  (if (= 3 (length coordLst))
  36.                    (list (distance sta coordLst) plObj)
  37.                    (progn
  38.                      (setq errCnt (1+ errCnt))
  39.                      nil
  40.                    )
  41.                  )
  42.                )
  43.                ss
  44.              )
  45.            )
  46.            '(lambda (a b) (< (car a) (car b)))
  47.          )
  48.        )
  49.        (vlax-invoke plObj 'move '(0.0 0.0 0.0) (setq cur (mapcar '+ cur vec)))
  50.      )
  51.      (vla-delete lnObj)
  52.      (if (/= 0 errCnt)
  53.        (princ (strcat "\nError: skipped " (itoa errCnt) " polyline(s) that were intersected more than once "))
  54.      )
  55.    )
  56. )
  57. (vla-endundomark doc)
  58. (princ)
  59. )

170913d8s6rratrur1cer7.jpg
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 19:54 , Processed in 0.450630 second(s), 61 queries .

© 2020-2025 乐筑天下

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