乐筑天下

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

[编程交流] 图层和标注Lisp

[复制链接]

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 10:47:31 | 显示全部楼层 |阅读模式
这是一个相当大的问题,但我想知道是否有人知道一个lisp程序(或如何编写一个)可以使用选定的块名在图形中生成图层列表。
i、 e.我选择2个块(称为Block1和Block2)并按下按钮,然后用这个名称创建2个层?。。如果它们也可以移动到该层上,那将非常有用。
 
&我的第二个问题(可能更大)是,有没有可能创建一些东西,在某一层的每一行旁边放置一个数字,其尺寸以米为单位?。。。
i、 e.如果我在“Layer1”上画了一个3m x 3m的正方形,我然后按下一个按钮&它将把数字“3”放在sqaure上每条线的外侧。
 
这两个大请求,但任何帮助(或在正确的方向推动)将不胜感激。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:55:08 | 显示全部楼层
你好
该Lisp将采用选定块的名称,并创建一个包含块名称的层
块层将是当前的、连续的和红色的。
  1. (defun c:blk (/ Ent BlkEnt blkNme )
  2. (setq Ent (car(entsel "\n Select a Block: "))
  3. BlkEnt (entget Ent)
  4. BlkNme (cdr (assoc 2 BlkEnt))
  5. )
  6.    (vl-cmdf "_.-layer" "_m" BlkNme "ltype" "continuous" "" "color" "red" "" "")
  7. (setvar "clayer" BlkNme)
  8. (princ)
  9. )
  10.        

 
当做
 
塔瓦特
回复

使用道具 举报

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 11:08:04 | 显示全部楼层
太棒了谢谢有什么方法可以让我分组选择几个街区吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:11:10 | 显示全部楼层
这应该快得多:
 
  1. (defun c:Blk2lay ( / ss )
  2. ;; © Lee Mac 2010
  3. (if (setq ss (ssget '((0 . "INSERT"))))
  4.    (
  5.      (lambda ( i / e done )
  6.        (while (setq e (ssname ss (setq i (1+ i))))
  7.          (if (not (member (cdr (assoc 2 (entget e))) done))
  8.            (progn
  9.              (entmake
  10.                (list
  11.                  (cons 0 "LAYER")
  12.                  (cons 100 "AcDbSymbolTableRecord")
  13.                  (cons 100 "AcDbLayerTableRecord")
  14.                  (assoc 2 (entget e))
  15.                  (cons 70 0)
  16.                )
  17.              )
  18.              (setq done (cons (cdr (assoc 2 (entget e))) done))
  19.            )
  20.          )
  21.          (entupd
  22.            (cdr
  23.              (assoc -1
  24.                (entmod
  25.                  (subst
  26.                    (cons 8 (cdr (assoc 2 (entget e))))
  27.                    (assoc 8 (entget e))
  28.                    (entget e)
  29.                  )
  30.                )
  31.              )
  32.            )
  33.          )         
  34.        )
  35.      )
  36.      -1
  37.    )
  38. )
  39. (princ)
  40. )
  41.      
回复

使用道具 举报

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 11:20:50 | 显示全部楼层
太棒了!。。。真是太棒了!。。谢谢大家!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:29:19 | 显示全部楼层
非常欢迎你参加Camel_Racer。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:35:11 | 显示全部楼层
仅供参考,当您对图层使用“生成”选项时,创建的图层将设置为当前图层。不需要担心设置clayer变量。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 11:42:38 | 显示全部楼层
直线或柱脚的自动尺寸标注非常简单,只需列出直线并获取其长度,然后将文本放在中点即可。
 
困难的部分是让文本在每行的正确一侧,您可能需要为每行输入“是”或“否”。
 
这是一个很老的问题,但一个很好的起点为你提供了创建自己的问题的大部分答案。
 
  1. ;SETOUT3.LSP
  2. ; program to draw setout details as a co-ord list
  3. ; with co-ords to two points
  4. ; 29/7/01 by alan
  5. (setvar "menuecho" 0)
  6. (setvar "SNAPMODE" 0)
  7. (COMMAND "STYLE" "MYDEFAULT" "ISO3098b" 0.0 1.0 0.0 "N" "N" "N")
  8. (setq oldangbase (getvar "angbase"))
  9. (setq oldangdir (getvar "angdir"))
  10. (setq oldaunits (getvar "aunits"))
  11. (setvar "angbase" 0.0)
  12. (setvar "angdir" 0)
  13. (setvar "aunits" 3)
  14. (SETQ SETSC (GETREAL "\nWhat is overall scale 1 ?  "))
  15. (SETQ TXTHT (* 1.75 setsc)) ;CHANGE TO ASK FOR FINAL PLOT SCALE   
  16. (while
  17. (SETVAR "OSMODE" 1)
  18. (setq pt1 (getpoint "\nPick 1st point, press <cr> to exit"))
  19. (setq pt2 (getpoint "\nPick next point, press <cr> to exit"))
  20. (SETQ DIST (DISTANCE PT1 PT2))
  21. (SETQ DISTMID (/ DIST 2.0))
  22. (SETQ ANG (ANGLE PT1 PT2))
  23. (setq pt3 (polar pt1 ANG DISTMID))
  24. (setq pt3 (polar pt3 (+ ang 1.5707) 1.5))
  25. (SETQ BLOCKLEN (RTOS DIST 2 2))
  26. (SETVAR "OSMODE" 0)
  27. (command "text" "MC" pt3 txtht ANG BLOCKLEN)
  28. (setq flip (getstring "\nFlip text 180 press f  "))
  29. (if (or (= flip "f")(= flip "F"))
  30. (command "rotate" "l" "" pt3 3.14159)
  31. )
  32. )                                                   ; end while
  33. (setvar "angbase" oldangbase )
  34. (setvar "angdir" oldangdir)
  35. (setvar "aunits" oldaunits)
  36. (setq pt1 nil
  37.      pt2 nil
  38.      pt3 nil
  39.      pt4 nil
  40.      pt5 nil
  41.      pt6 nil
  42.      stpt nil
  43.      ans nil
  44. )
  45. (princ)

 
今天还有另一篇关于文字到行的帖子。
回复

使用道具 举报

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 11:47:44 | 显示全部楼层
谢谢你的邀请。。。这对我来说应该足够屠宰了
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 17:04 , Processed in 0.732697 second(s), 70 queries .

© 2020-2025 乐筑天下

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