乐筑天下

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

[编程交流] 嗨,帮手们,需要紧急帮助

[复制链接]

18

主题

44

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 13:16:56 | 显示全部楼层 |阅读模式
亲爱的助手们:,
 
我需要在下面的代码小修改。此代码适用于多条选定多段线上的“测量”命令。同样,我也需要“DIVIDE”命令。有人能帮我吗。
(定义c:MEB(/blk ss l name)
; 塔尔瓦特04。04. 2011
(如果
(和(setq blk(entsel“\n Select Block:”))
(setq ss(ssget“_:L”'((0。“直线,样条曲线,LWPOLYLINE,POLYLINE”)))
(setq l(getdist“\n块之间的距离:”))
(setq scl(getdist“\n输入比例:”))
)
(程序
(setq名称(cdr(assoc 2(entget(car blk)Ю)Ю)))
((λ(i/ss1)
(虽然
(setq ss1(ssname ss(setq i(1+i)))
(setq标记(entlast))
(命令“测量”ss1“块”name“u Y”l)
(while(setq en(entnext标记))
(setq elist(entget en)
pt(cdr(assoc 10 elist)))
(命令“\u scale”en“\u non”pt scl)
(普林斯(cdr(assoc 2 elist)))
(entupd en)
(setq标记en)
)
)
)
-1
)
)
(普林斯)
)
(普林斯)
)
 
回复

使用道具 举报

15

主题

315

帖子

361

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 13:27:07 | 显示全部楼层
  1. (defun c:DEB(/ blk ss s name)
  2. (if
  3. (and (setq blk (entsel "\nSelect Block: "))
  4. (setq ss (ssget "_:L" '((0 . "LINE,SPLINE,LWPOLYLINE,POLYLINE"))))
  5. (setq s (getint "\nEnter the number of segments: "))
  6. (setq scl (getdist "\n Enter a scale :"))
  7. )
  8. (progn
  9. (setq name (cdr (assoc 2 (entget (car blk)))))
  10. ((lambda (i / ss1)
  11. (while
  12. (setq ss1 (ssname ss (setq i (1+ i))))
  13. (setq marker(entlast))
  14. (command "_.divide" ss1 "Block" name "_Y" s)
  15. (while (setq en (entnext marker))
  16. (setq elist (entget en)
  17. pt (cdr (assoc 10 elist)))
  18. (command "_scale" en "" "_non" pt scl)
  19. (princ (cdr (assoc 2 elist)))
  20. (entupd en)
  21. (setq marker en)
  22. )
  23. )
  24. )
  25. -1
  26. )
  27. )
  28. (princ)
  29. )
  30. (princ)
  31. )
回复

使用道具 举报

18

主题

44

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 13:31:49 | 显示全部楼层
尊敬的先生:,
 
我试过你的代码,但不起作用。但无论如何,谢谢你来帮我。
回复

使用道具 举报

10

主题

598

帖子

594

银币

初来乍到

Rank: 1

铜币
48
发表于 2022-7-5 13:37:56 | 显示全部楼层
什么不起作用?这里很好用!
回复

使用道具 举报

18

主题

44

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 13:41:44 | 显示全部楼层
请参见以下来自autocad的错误代码。
命令:DEB
选择块:
选择对象:找到1个
选择对象:
输入段数:5
输入比例:0.075
_.divide未知命令“divide”。按F1键获取帮助。
命令:
回复

使用道具 举报

15

主题

315

帖子

361

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 13:48:33 | 显示全部楼层
这很奇怪。
 
看看这是否有效,我写了一个自定义除法。
如果有人有比我的(getAngle)更优雅的方式,请发布。
 
  1. (vl-load-com)
  2. (defun Insert (pt Nme scale rotation)
  3.  (entmakex (list (cons 0 "INSERT")
  4.                  (cons 2 Nme)
  5.                  (cons 10 pt)
  6.                  (cons 41 scale) (cons 42 scale) (cons 43 scale)
  7.                  (cons 50 rotation)
  8.                  ))
  9. )
  10. ;;(defun getAngle (pl dist / param)
  11. ;;   (setq ip1 (vlax-curve-getPointAtDist pl  (- dist  0.001) ))
  12. ;;   (setq ip2 (vlax-curve-getPointAtDist pl  (+ dist  0.001) ))
  13. ;;   (angle ip1 ip2)
  14. ;;)
  15. (defun getAngle (obj dist / )
  16.   (angle '(0.0 0.0 0.0) (vlax-curve-getfirstderiv obj (vlax-curve-getparamatdist obj dist)))
  17. )
  18. (defun customDivide (block pl segments sc / d2 ip i ang dist)
  19.   (setq d2 (vla-get-length  (vlax-ename->vla-object pl) ))
  20.   (setq i 1)
  21.   (repeat (- segments 1)
  22.     (setq ip (vlax-curve-getPointAtDist pl (setq dist (* i (/ d2 segments)) )))
  23.     (setq ang (getAngle pl dist))
  24.     (Insert ip block sc ang )
  25.     (setq I (+ i 1))
  26.   )
  27. )
  28. (defun c:DEB(/ blk ss s name)
  29.     (if
  30.         (and
  31.             (setq blk (entsel "\nSelect Block: "))
  32.             (setq ss (ssget "_:L" '((0 . "LINE,SPLINE,LWPOLYLINE,POLYLINE"))))
  33.             (setq s (getint "\nEnter the number of segments: "))
  34.             (setq scl (getdist "\nEnter a scale : "))
  35.         )
  36.         (progn
  37.             (setq name (cdr (assoc 2 (entget (car blk)))))
  38.             ((lambda (i / ss1)
  39.                 (while
  40.                   (setq ss1 (ssname ss (setq i (1+ i))))
  41.                   (customDivide name ss1 s scl)
  42.                 )
  43.                 )
  44.                 -1
  45.             )
  46.         )
  47.     (princ)
  48.     )
  49. (princ)
  50. )
回复

使用道具 举报

18

主题

44

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 13:58:13 | 显示全部楼层
您好,我尝试了您的代码,但出现了错误:
命令:deb
选择块:
选择对象:指定对角点:2
选择对象:
输入段数:10
输入比例:1
; 错误:无函数定义:插入
回复

使用道具 举报

15

主题

315

帖子

361

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 14:01:59 | 显示全部楼层
你把我(上次回复的)所有代码都放在一个lisp文件中了吗?我添加了一个函数插入。
回复

使用道具 举报

0

主题

946

帖子

978

银币

限制会员

铜币
-3
发表于 2022-7-5 14:09:06 | 显示全部楼层
 
 
  1. (defun getAngle (obj dist / )
  2.   (angle '(0.0 0.0 0.0) (vlax-curve-getfirstderiv obj (vlax-curve-getparamatdist obj dist)))
  3. );end_defun
141658umghtbfpnn33mgth.png
回复

使用道具 举报

15

主题

315

帖子

361

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 14:12:34 | 显示全部楼层
谢谢我想我需要vlax curve getfirstderiv,但我无法让它工作。我不知道如何从中找到一个角度。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 23:24 , Processed in 1.804119 second(s), 74 queries .

© 2020-2025 乐筑天下

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