乐筑天下

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

[编程交流] Windows维度

[复制链接]

20

主题

94

帖子

86

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 16:01:04 | 显示全部楼层 |阅读模式
你好
 
我想使用lisp,使用元素的z值为窗口添加维度。
 
我使用由以下组成的“标准块”(附件):
 
WS和WH。WS=地板和窗台之间的高度WH=窗户的高度。
 
这个lisp可以这样工作:
 
选择“标准块”,并通过单击更改“标准文本值WS=11.11 WH=22.22”。
 
类似于:
 
拾取标准块
 
1单击=捕捉地板(拾取地板的z值)
 
2单击=捕捉窗台(拾取窗台的z值)
 
3单击=捕捉窗口顶部(拾取窗口顶部的z值)
 
 
WS=窗台z-地板z
 
WH=窗户顶部的z-窗台的z
 
非常感谢
窗户。图纸
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 16:17:36 | 显示全部楼层
dwg中没有块。我所看到的是由两行组成的多行文字。
回复

使用道具 举报

20

主题

94

帖子

86

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 16:27:20 | 显示全部楼层
对不起,是多行文字,但您可以根据需要更改。
 
谢谢
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 16:39:37 | 显示全部楼层
  1. (defun c:Test ( / *error* doc enm obj ptBot ptTop)
  2. (defun *error* (msg)
  3.    (vla-endundomark doc)
  4. )
  5. (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  6. (vla-endundomark doc)
  7. (vla-startundomark doc)
  8. (while
  9.    (and
  10.      (setq enm (car (entsel "\nSelect mtext: ")))
  11.      (or
  12.        (= "AcDbMText" (vla-get-objectname (setq obj (vlax-ename->vla-object enm))))
  13.        (prompt "\nError: not an mtext ")
  14.      )
  15.      (setq ptBot (getpoint "\nBottom of frame: "))
  16.      (setq ptTop (getpoint ptBot "\nTop of frame: "))
  17.      (setq ptBot (trans ptBot 1 0)) ; in WCS.
  18.      (setq ptTop (trans ptTop 1 0))
  19.    )
  20.    (vla-put-textstring
  21.      obj
  22.      (strcat ; "WS=11.11\\PWH=22.22"
  23.        "WS=" (rtos (caddr ptBot) 2 2)
  24.        "\\P"
  25.        "WH=" (rtos (- (caddr ptTop) (caddr ptBot)) 2 2)
  26.      )
  27.    )
  28. )
  29. (vla-endundomark doc)
  30. (princ)
  31. )
回复

使用道具 举报

20

主题

94

帖子

86

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 16:57:33 | 显示全部楼层
谢谢
 
我稍微修改了你的代码:
 
WS=底部框架-地板标高
 
再次感谢
 
  1. (defun c:Test ( / doc enm obj ptFloor ptBot ptTop)
  2. (command "UCS" "world")
  3. (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  4. (vla-endundomark doc)
  5. (vla-startundomark doc)
  6. (while
  7.    (and
  8.      (setq enm (car (entsel "\nSelect mtext or Enter to quit: ")))
  9.      (or
  10.        (= "AcDbMText" (vla-get-objectname (setq obj (vlax-ename->vla-object enm))))
  11.        (prompt "\nError: not an mtext ")
  12.      )
  13.   (setq ptFloor (getpoint "\nFloor level: "))
  14.      (setq ptBot (getpoint "\nBottom of frame: "))
  15.      (setq ptTop (getpoint ptBot "\nTop of frame: "))
  16.      (setq ptFloor (trans ptFloor 1 0))
  17.   (setq ptBot (trans ptBot 1 0))
  18.      (setq ptTop (trans ptTop 1 0))
  19.    )
  20.    (vla-put-textstring
  21.      obj
  22.      (strcat ; "WS=11.11\\PWH=22.22"
  23.        "WS=" (rtos (/ (- (caddr ptBot) (caddr ptFloor)) 1000.) 2 2)
  24.        "\\P"
  25.        "WH=" (rtos (/ (- (caddr ptTop) (caddr ptBot)) 1000.) 2 2)
  26.      )
  27.    )
  28. )
  29. (vla-endundomark doc)
  30. (princ)
  31. (command "UCS" "_p")
  32. )
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 17:12:42 | 显示全部楼层
确实没有理由更改UCS。代码中对trans函数的调用将点从当前UCS转换为WCS。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 21:04 , Processed in 1.200369 second(s), 75 queries .

© 2020-2025 乐筑天下

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