乐筑天下

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

[编程交流] 矩形尺寸、文字和尺寸

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 16:42:53 | 显示全部楼层 |阅读模式
尊敬的Autodesk小组成员,特别是所有程序员,我需要您在这一主题上的帮助(如果有人能在这方面帮助我,那将非常棒)
我希望为我的AUTOCAD 2017项目需要创建一个LISP。
 
我想用自定义命令在特定层中创建一个矩形,然后我想在运行时给该矩形加上L&W,这样在完成/在命令中间,我将得到所需大小的矩形,然后在创建矩形后,我想得到一条弹出消息,autocad将要求我提供默认情况下要放置在所创建矩形中心的矩形的名称。
 
我想为要创建的不同矩形执行此操作。
 
我创建了自定义命令来创建特定的当前矩形层,然后使用下面的代码创建了矩形。我已经10年没有接触过LISP写作了&忘记了大部分事情,我以前的代码在新版本中无法使用。有人能帮我吗。这将是一个很大的帮助,从你,提前感谢你的支持同样。我急需它。
 
(defun_SetCLayer(layerName)
(如果(tblsearch“layer”layerName)
(setvar’clayer layerName)
(提示
(strcat“\n**层\”“层名称\”“未找到**”)
)
)
(普林斯)
)
(defun c:ACDB()(\u SetCLayer“AC\u DB”)(命令“RECTANG”“)-在此情况下,autocad也给出了一些违规行为。
(defun c:ACON()(\u SetCLayer“AIR\u CON”)(命令“RECTANG”))
(defun c:FBAT()(_SetCLayer“BATTERY”)(命令“RECTANG”))
(defun c:FBEN()(\u SetCLayer“BUILDING\u ENVELOPE”)(命令“RECTANG”))
(defun c:FCAB()(_SetCLayer“CABINET”)(命令“RECTANG”))
(defun c:DCDB()(\u SetCLayer“DC\u DB”)(命令“RECTANG”))
(defun c:FDEF()(_SetCLayer“Defpoints”)(命令“RECTANG”))
(defun c:FPDI()(_SetCLayer“DIMENSIONS”)(命令“RECTANG”))
(defun c:FPDR()(_SetCLayer“DOORS”)(命令“RECTANG”))
(defun C:FFED()(_SetCLayer“FEEDER”)(命令“RECTANG”))
(defun c:FPLD()(\u SetCLayer“FLOOR\u LEGEND”)(命令“RECTANG”))
(defun c:IMGI()(_SetCLayer“Image”)(命令“RECTANG”))
(defun c:FOTR()(_SetCLayer“OTHER”)(命令“RECTANG”))
(defun c:FRAK()(_SetCLayer“RACK”)(命令“RECTANG”))
(defun c:FREF()(_SetCLayer“整流器”)(命令“RECTANG”))
(defun c:FTEX()(_SetCLayer“TEXT”)(命令“RECTANG”))
)
 
过去,我使用下面的命令来给出文本,但现在不起作用
(定义C:ACDBT()
(setq bldg_编号(strcase(getstring)/n键入ACDB编号:“))
(setq建筑编号(strcat“ACDB”建筑编号))
(polbldgno)
(命令“clayer”“AC\u DB”“”“text“fspt txtht angpts bldgno”)
)
 
最后,我的要求是我必须创建平面图:
1.当前特定层中的矩形,我应该在其中弹出以给出L和W。
2.该矩形中心的文本“在连接特定文本后,弹出窗口仅输入数字”
3.在创建所有矩形后,我想通过选择它们来为所有矩形提供尺寸。
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-5 16:56:59 | 显示全部楼层
请阅读代码发布指南,并编辑代码以包含在代码标签中。[NOPARSE]
  1. Your Code Here[/NOPARSE]
=
  1. Your Code Here
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:13:45 | 显示全部楼层
尊敬的Autodesk小组成员,特别是所有程序员,我需要您在这一主题上的帮助(如果有人能在这方面帮助我,那将非常棒)
我希望为我的AUTOCAD 2017项目需要创建一个LISP。
 
我想用自定义命令在特定层中创建一个矩形,然后我想在运行时给该矩形加上L&W,这样在完成/在命令中间,我将得到所需大小的矩形,然后在创建矩形后,我想得到一条弹出消息,autocad将要求我提供默认情况下要放置在所创建矩形中心的矩形的名称。
 
我想为要创建的不同矩形执行此操作。
 
我创建了自定义命令来创建特定的当前矩形层,然后使用下面的代码创建了矩形。我已经10年没有接触过LISP写作了&忘记了大部分事情,我以前的代码在新版本中无法使用。有人能帮我吗。这将是一个很大的帮助,从你,提前感谢你的支持同样。我急需它。
  1. (defun _SetCLayer (layerName)
  2. (if (tblsearch "layer" layerName)
  3. (setvar 'clayer layerName)
  4. (prompt
  5. (strcat "\n** Layer "" layerName "" not found ** ")
  6. )
  7. )
  8. (princ)
  9. )
  10. (defun c:ACDB () (_SetCLayer "AC_DB") (command "RECTANG" "")) - in this autocad is also giving some violations.
  11. (defun c:ACON () (_SetCLayer "AIR_CON") (command "RECTANG"))
  12. (defun c:FBAT () (_SetCLayer "BATTERY") (command "RECTANG"))
  13. (defun c:FBEN () (_SetCLayer "BUILDING_ENVELOPE") (command "RECTANG"))
  14. (defun c:FCAB () (_SetCLayer "CABINET") (command "RECTANG"))
  15. (defun cCDB () (_SetCLayer "DC_DB") (command "RECTANG"))
  16. (defun c:FDEF () (_SetCLayer "Defpoints") (command "RECTANG"))
  17. (defun c:FPDI () (_SetCLayer "DIMENSIONS") (command "RECTANG"))
  18. (defun c:FPDR () (_SetCLayer "DOORS") (command "RECTANG"))
  19. (defun C:FFED () (_SetCLayer "FEEDER") (command "RECTANG"))
  20. (defun c:FPLD () (_SetCLayer "FLOOR_LEGEND") (command "RECTANG"))
  21. (defun c:IMGI () (_SetCLayer "Image") (command "RECTANG"))
  22. (defun c:FOTR () (_SetCLayer "OTHER") (command "RECTANG"))
  23. (defun c:FRAK () (_SetCLayer "RACK") (command "RECTANG"))
  24. (defun c:FREF () (_SetCLayer "RECTIFIER") (command "RECTANG"))
  25. (defun c:FTEX () (_SetCLayer "TEXT") (command "RECTANG"))
  26. )
  27. In past i used below command to give text, which is now not working
  28. (defun C:ACDBT ()
  29. (setq bldg_no (strcase (getstring "/n Type the ACDB NO: ")))
  30. (setq bldgno (strcat "ACDB" bldg_no))
  31. (polbldgno)
  32. (command "clayer" "AC_DB" "" "text" fspt txtht angpts bldgno "")
  33. )

最后,我的要求是我必须创建平面图:
1.当前特定层中的矩形,我应该在其中弹出以给出L和W。
2.该矩形中心的文本“在连接特定文本后,弹出窗口仅输入数字”
3.在创建所有矩形后,我希望通过选择它们一次性为所有矩形提供尺寸。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:20:05 | 显示全部楼层
写一个defun来绘制矩形,而不是命令“rectang”(Drawrectang),这应该要求左下角点的长度和宽度。这是一个开始暗淡,因为你去更容易选择所有之后。就我而言,我会使用菜单或工具栏,而不是所有的c:defuns。用菜单可以分菜单等。
 
  1. (defun drawrectang ( / pt pt2 len wid )
  2. (setq pt (getpoint "please pick lower left"))
  3. (setq len (getdist pt "Please enter length"))
  4. (setq wid (getdist pt "Please enter width"))
  5. (command "rectang" pt "D" len wid "")
  6. (setq pt2 (polar pt 0.0 len)) ; 4 corner points
  7. (setq pt3 (polar pt2 (/ pi 2.0) wid))
  8. (setq pt4 (polar pt (/ pi 2.0) wid))
  9. (setq ang (angle pt pt2))
  10. (setq len (distance pt pt2))
  11. (setq pt (polar ang (/ len 2.0)))
  12. (command "text" pt "" "" (rtos len 2 2))
  13. )
  14. ; do dims based on pt pt2 pt3 pt4

 
这可以用于长度和宽度输入,只需查看代码中2项的示例。
GETVALS。lsp
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:37:34 | 显示全部楼层
这将做一个矩形添加尺寸和标签
 
  1. ; draw a rectang and remember the corners v's just draw a rectang
  2. ; by Alan H Feb 2017
  3. ; this defun would live in my library
  4. (defun rectangcnrs ( / len wid )
  5. (setq pt1 (getpoint "please pick lower left"))
  6. (setq len (getdist pt1 "Please enter length"))
  7. (setq pt2 (polar pt1 0.0 len)) ; 4 corner points
  8. (setq wid (getdist pt2 "Please enter width"))
  9. (setq pt3 (polar pt2 pi2 wid))
  10. (setq pt4 (polar pt3 pi len))
  11. (command "rectang" pt1 pt3)
  12. )
  13. ; program starts here
  14. (defun c:rectdimtx ( / off oldang oldsnap  pt1 pt2 pt3 pt4 pt5)
  15. (setq pi2 (/ pi 2.0)) ; global setting in my library lisp needed
  16. (setq off 20) ; change this as required or ask for offset code
  17. ; remember old settings
  18. (setq oldang (getvar 'angdir))
  19. (setq oldsnap (getvar 'osmode))
  20. (setq angunits (getvar 'aunits))
  21. ; make angles counterclockwise so angles work
  22. ; turn off osnaps just helps
  23. (setvar 'angdir 0)
  24. (setvar 'osmode 0)
  25. (setvar 'aunits 3)
  26. (rectangcnrs)
  27. (command "_.dimaligned" pt2 pt3 (polar pt2 0.0 off))
  28. (command "_.dimaligned" pt3 pt4 (polar pt4 pi2 off))
  29. (setq ang (angle pt3 pt1))
  30. (setq pt5 (polar pt1 ang (/ (distance pt1 pt3) 2.0)))
  31. (command "text" pt5 "" ang (getstring "Enter text")) ; put this getstring in getvals using 3 lines len wid desc
  32. (setvar 'angdir oldang)
  33. (setvar 'osmode oldsnap)
  34. (setvar 'aunits angunits)
  35. ) ;defun
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:44:00 | 显示全部楼层
此版本使用dcl作为输入。
 
  1. ; draw a rectang and remember the corners v's just draw a rectang
  2. ; by Alan H Feb 2017
  3. ; this defun would live in my library
  4. (defun rectangcnrs ( / len wid )
  5. (if (not AH:getval1)(Load "getvals")) ; loads getval 1-3
  6. (setq pt1 (getpoint "please pick lower left"))
  7. (ah:getval2 "Enter length" 5 4 "Enter height" 5 4)
  8. (setq len (atof val1))
  9. (setq wid (atof val2))
  10. (setq pt2 (polar pt1 0.0 len)) ; 4 corner points
  11. (setq pt3 (polar pt2 pi2 wid))
  12. (setq pt4 (polar pt3 pi len))
  13. (command "rectang" pt1 pt3)
  14. )
  15. ; program starts here
  16. (defun c:rectdimtx ( / off oldang oldsnap  pt1 pt2 pt3 pt4 pt5)
  17. (setq pi2 (/ pi 2.0)) ; global setting in my library lisp needed
  18. (setq off 20) ; change this as required or ask for offset code
  19. ; remember old settings
  20. (setq oldang (getvar 'angdir))
  21. (setq oldsnap (getvar 'osmode))
  22. (setq angunits (getvar 'aunits))
  23. ; make angles counterclockwise so angles work
  24. ; turn off osnaps just helps
  25. (setvar 'angdir 0)
  26. (setvar 'osmode 0)
  27. (setvar 'aunits 3)
  28. (rectangcnrs)
  29. (command "_.dimaligned" pt2 pt3 (polar pt2 0.0 off))
  30. (command "_.dimaligned" pt3 pt4 (polar pt4 pi2 off))
  31. (setq ang (angle pt1 pt3))
  32. (setq pt5 (polar pt1 ang (/ (distance pt1 pt3) 2.0)))
  33. (ah:getval1 "Enter string" 5 4)
  34. (command "text" pt5 "" ang val1) ; put this getstring in getvals using 3 lines len wid desc
  35. (setvar 'angdir oldang)
  36. (setvar 'osmode oldsnap)
  37. (setvar 'aunits angunits)
  38. ) ;defun
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 14:05 , Processed in 0.851660 second(s), 64 queries .

© 2020-2025 乐筑天下

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