乐筑天下

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

[编程交流] 从bl中绘制垂直线

[复制链接]

5

主题

11

帖子

6

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 16:22:47 | 显示全部楼层 |阅读模式
你好
我试图修改这个lisp,只画垂直(或水平)线
  1. (defun c:foo (/ selection pline sscount objpline inspoint intpoint entity)
  2. (if (not (setq selection (ssget "_I" '((0 . "CIRCLE,INSERT")))))
  3. (progn
  4. (prompt "\nSelect circles: ")
  5. (setq selection (ssget '((0 . "CIRCLE,INSERT"))))
  6. )
  7. )
  8. (setq pline (entsel "\nSelect polyline: "))
  9. (if (and
  10. pline
  11. (setq objpline (vlax-ename->vla-object (car pline)))
  12. )
  13. (repeat (setq sscount (sslength selection))
  14. (setq
  15. entity (entget (ssname selection (setq sscount (1- sscount))))
  16. inspoint (cdr (assoc 10 entity)); both center of Circle and insertion pt of Block
  17. intpoint (vlax-curve-getclosestpointto objpline inspoint)
  18. )
  19. (if intpoint
  20. (command "_.line" "non" inspoint "non" intpoint "")
  21. )
  22. )
  23. )
  24. )

 
 
我试图修改这行
intpoint(vlax曲线GetClosestPoint到objpline inspoint)

intpoint(vlax curve GetClosestPointTopProjection objpline inspoint’(0 1 0)))
 
但我有一个错误,我认为它忽略了块的Z坐标
你能帮助我吗?
提前谢谢你
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:50:53 | 显示全部楼层
发布dwg
回复

使用道具 举报

5

主题

11

帖子

6

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 16:54:55 | 显示全部楼层
你好,比格尔
这是一张附有说明的图纸
目的是随后将多段线转换为尺寸
例如。图纸
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 17:12:51 | 显示全部楼层
尝试:
  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 KGA_List_Divide_3 (lst / ret)
  9. (repeat (/ (length lst) 3)
  10.    (setq ret (cons (list (car lst) (cadr lst) (caddr lst)) ret))
  11.    (setq lst (cdddr lst))
  12. )
  13. (reverse ret)
  14. )
  15. (defun KGA_Sys_ObjectOwner (obj)
  16. (vla-objectidtoobject (vla-get-database obj) (vla-get-ownerid obj))
  17. )
  18. (defun LineToCurve (sta vec curve / end line ptLst)
  19. (setq line
  20.    (vla-addline
  21.      (KGA_Sys_ObjectOwner curve)
  22.      (vlax-3d-point sta)
  23.      (vlax-3d-point (mapcar '+ sta vec))
  24.    )
  25. )
  26. (if (setq ptLst (KGA_List_Divide_3 (vlax-invoke line 'intersectwith curve acextendthisentity)))
  27.    (progn
  28.      (setq end (car ptLst))
  29.      (foreach pt (cdr ptLst)
  30.        (if (< (distance sta pt) (distance sta end))
  31.          (setq end pt)
  32.        )
  33.      )
  34.      (vla-put-endpoint line (vlax-3d-point end))
  35.      line
  36.    )
  37.    (progn
  38.      (vla-delete line)
  39.      nil
  40.    )
  41. )
  42. )
  43. (defun c:LinesToCurve ( / curve doc pt1 pt2 ss vec)
  44. (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  45. (vla-endundomark doc)
  46. (vla-startundomark doc)
  47. (if
  48.    (and
  49.      (setq curve (car (entsel "\nSelect curve: ")))
  50.      (setq curve (vlax-ename->vla-object curve))
  51.      (princ "\nSelect blocks: ")
  52.      (setq ss (KGA_Conv_Pickset_To_ObjectList (ssget '((0 . "INSERT")))))
  53.      (setq pt1 (getpoint "\nFirst point for direction: "))
  54.      (setq pt2 (getpoint pt1 "\nSecond point for direction: "))
  55.    )
  56.    (progn
  57.      (setq vec (trans (mapcar '- pt2 pt1) 1 0 T))
  58.      (foreach blk ss
  59.        (LineToCurve (vlax-get blk 'insertionpoint) vec curve)
  60.      )
  61.    )
  62. )
  63. (vla-endundomark doc)
  64. (princ)
  65. )
回复

使用道具 举报

5

主题

11

帖子

6

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 17:31:43 | 显示全部楼层
谢谢我是Roy_043
我将使用此方法调整lisp
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-20 23:33 , Processed in 4.325762 second(s), 63 queries .

© 2020-2025 乐筑天下

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