乐筑天下

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

[编程交流] 帮助:宏脚本或lisp到

[复制链接]

48

主题

304

帖子

256

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
240
发表于 2022-7-5 21:45:23 | 显示全部楼层 |阅读模式
正在查找可以在单个命令中执行以下操作的宏或lisp:-
 
1.画一个十字(使用defpoint图层,但颜色变为绿色)
-纸上空间环境
-十字架长度约5mm
2.将此十字的中心放置在点0,0处
 
目的是帮助我直观地看到标题bk是否对齐到0,0。
 
或者,如果autocad中有本机命令,请执行advise。
 
谢谢
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 21:51:02 | 显示全部楼层
有了lisp程序,生活变得很简单。试试这个lisp程序,让我知道。
 
  1. (defun c:cross nil
  2. ;; Tharwat 27.Nov.2014   ;;
  3. (mapcar '(lambda (x)
  4.             (entmake (list '(0 . "LINE")
  5.                            '(8 . "Defpoints")
  6.                            '(62 . 3)
  7.                            (cons 10 (polar '(0. 0. 0.) (car x) 5.))
  8.                            (cons 11 (polar '(0. 0. 0.) (cadr x) 5.))
  9.                      )
  10.             )
  11.           )
  12.          '((0.785398 3.92699) (2.35619 5.49778))
  13. )
  14. (princ)
  15. )
回复

使用道具 举报

48

主题

304

帖子

256

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
240
发表于 2022-7-5 21:54:30 | 显示全部楼层
 
凉的但我意识到它太小了。如何将十字改为50mm?
 
谢谢
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 21:59:35 | 显示全部楼层
 
只需将例程中的数字5改为50即可。
 
例如
  1. (cons 10 (polar '(0. 0. 0.) (car x) [color="blue"]50.[/color]))
  2. (cons 11 (polar '(0. 0. 0.) (cadr x) [color="blue"]50.[/color]))
回复

使用道具 举报

48

主题

304

帖子

256

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
240
发表于 2022-7-5 22:01:52 | 显示全部楼层
 
 
太棒了,兄弟。非常感谢
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 22:05:16 | 显示全部楼层
 
非常欢迎你
回复

使用道具 举报

7

主题

80

帖子

73

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 22:08:10 | 显示全部楼层
还有,我的变长NOOB例程
  1. (setq l1 "100,0,0") ;sets the second point of the line
  2. (defun c:test ()
  3. (setvar "filedia" 0)
  4. (setvar "cmdecho" 1)
  5. (setvar "orthomode" 1)
  6. (setq cl1 (getstring (strcat "\nEnter Line X, <" l1 ">: ")))
  7. (if (= cl1 "")
  8.     (setq cl1 l1)
  9.     (setq l1 cl1)
  10. )
  11. (command "clayer" "Defpoints")
  12. (command "celtype" "Bylayer")
  13. (command "line" "0,0,0" l1 "" "")
  14. (command "-array" "l" "" "p" "0,0,0" "4" "" "")
  15. (command "zoom" "C" "0,0,0" "250")
  16. (setvar "filedia" 1)
  17. (setvar "cmdecho" 0)
  18. (setvar "orthomode" 0)
  19. (princ)
  20. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 22:10:21 | 显示全部楼层
为什么不选取块并只显示两行代码的偏移量呢
 
  1. (setq obj (entget (car (entsel "\nPick title block"))))
  2. (alert (strcat "Title block is at   " (rtos (car (assoc 10 obj)) 2 1) "," (rtos (cadr (assoc 10 obj)) 2 1 )))

 
好的,阅读你的另一篇文章,所以你需要的是离开,检查dwg中的所有标题栏,根据需要移动,然后运行绘图宏。看看我有没有时间。
 
这件事已经接近尾声了
  1. ; moves all objects in pspace to 0,0 alignment
  2. ; By BIG AL
  3. ; moves all objects in pspace to 0,0 alignment
  4. (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  5. (vlax-for lay (vla-get-Layouts doc)
  6. (setq plotabs (cons (vla-get-name lay) plotabs))
  7. )
  8. (setq plottablist (acad_strlsort plotabs))
  9. (setq len (length plottablist))
  10. (setq oldsnap (getvar "osmode"))
  11. (setvar "osmode" 0)
  12. (setq en (entsel "Pick Title Block:"))
  13. (setq  ed (entget (car en)))
  14. (setq K 0)
  15. (repeat len
  16. (setq name (nth K plottablist))
  17. (princ name)
  18. (if (/= name "Model")
  19.    (progn
  20.    (setvar "ctab" name)
  21.    (setq minxy  (getvar "extmin"))
  22.    (setq maxxy (getvar "extmax"))
  23.    (setq ss (ssget "_X" (list (cons 0 "INSERT")  (cons 410 name) (cons 2 (cdr (assoc 2 ed))) ) ))
  24.    (setq n (sslength ss))
  25.    (setq en (ssname ss 0))
  26.    (setq xy (assoc 10 (entget en)))
  27. ; insertion pt   (setq xy (assoc 10 el))
  28.    (setq xy (list (cadr xy)(caddr xy)))
  29.    (command "move" "w" minxy maxxy  "" xy "0,0")
  30.    (command "zoom" "E")
  31.    ) ;end progn
  32. ) ; end if
  33. (setq K (+ K 1))
  34. (princ k)
  35. (setq ss nil)
  36. (setq xy nil)
  37. ) ; end repeat
  38. (setvar "osmode" oldsnap)
  39. (princ)
回复

使用道具 举报

48

主题

304

帖子

256

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
240
发表于 2022-7-5 22:14:01 | 显示全部楼层
 
谢谢ttray33y。另一个有趣的Lisp程序。我不想输入任何东西,但你的Lisp程序也是守门员。
回复

使用道具 举报

48

主题

304

帖子

256

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
240
发表于 2022-7-5 22:17:53 | 显示全部楼层
 
如果我输入正确,上面的lisp会将图纸空间中的所有内容移动到0,0,0?我尝试了上面的代码并选择了标题栏,然后出现了以下错误
 
顺便问一下,lisp如何知道捕捉图形的范围以及应该移动到标题栏的哪个点?
 
此外,交叉的目的是快速检查标题栏是否位于0,0,0。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 06:16 , Processed in 0.700753 second(s), 72 queries .

© 2020-2025 乐筑天下

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