乐筑天下

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

[编程交流] 标注属性编辑

[复制链接]

12

主题

57

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 14:26:20 | 显示全部楼层 |阅读模式
很多时候,我不得不将维度单位属性从分数改为3或4位小数。属性工具可以为我添加注释。我想写一个例程来通过键盘完成这项工作。问题是我似乎找不到AutoCAD命令来执行此操作。我知道我可以写lisp,只是不知道命令。我尝试了属性、更改和dimtedit。这些都不对。有人能告诉我要找的命令名吗。我可以从那里拿走。提前谢谢。
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 14:33:38 | 显示全部楼层
 
 
检查DIMVAR(维度变量)
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 14:40:09 | 显示全部楼层
 
变量为DIMLUNIT和DIMFRAC。
 
从ACAD帮助部分:
  1. Type: Integer
  2. Saved in: Drawing
  3. Initial value: 2
  4. Obsolete. Has no effect except to preserve the integrity of scripts. DIMUNIT is replaced by DIMLUNIT and DIMFRAC.
回复

使用道具 举报

12

主题

57

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 14:44:11 | 显示全部楼层
 
 
谢谢,我到处都找了,包括autocad帮助。我再也没见过这个。谢谢。我会试试的
回复

使用道具 举报

12

主题

57

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 14:48:01 | 显示全部楼层
 
 
这些似乎只适用于下一个时间维度。如果屏幕上有一个精度为小数1/64的维度,并且想用小数将其更改为小数,那么现在我想更改一个现有维度。xxx精度我必须选择尺寸-属性(这会打开属性工具pallete)将分数更改为小数,然后更改。xxxxxx至。xxx精度。
 
我想知道我是否可以写一个Lisp程序的句子
 
命令到3PLC
选择要更改的尺寸
结果将维度从小数更改为小数点后3位
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 14:51:22 | 显示全部楼层
 
尝试使用Dimoverride命令
 
 
也在命令下的ACAD帮助中
回复

使用道具 举报

12

主题

57

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 14:55:08 | 显示全部楼层
 
 
谢谢你的帮助。我将检查覆盖命令,但目前它正在工作
 
  1. (defun c:to3plc ()
  2. (setq
  3. OLDDIMDEC (getvar "DIMDEC")
  4. OLDDIMLUNIT (getvar "DIMLUNIT")
  5. );end setq
  6. (setvar "DIMDEC" 3)
  7. (setvar "DIMLUNIT" 2)
  8. (command "dim" "update" pause pause)
  9. (command "exit")
  10. (setvar "DIMDEC" OLDDIMDEC)
  11. (setvar "DIMLUNIT" OLDDIMLUNIT)
  12. (princ)
  13. );end defun
回复

使用道具 举报

12

主题

57

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 15:03:14 | 显示全部楼层
  1. (defun c:t3 (/ OLDDIMDEC OLDDIMLUNIT)
  2. (setq
  3. OLDDIMDEC (getvar "DIMDEC")
  4. OLDDIMLUNIT (getvar "DIMLUNIT")
  5. );end setq
  6. (setvar "DIMDEC" 3)
  7. (setvar "DIMLUNIT" 2)
  8. (command "dim" "update" pause pause)
  9. (command "exit")
  10. (setvar "DIMDEC" OLDDIMDEC)
  11. (setvar "DIMLUNIT" OLDDIMLUNIT)
  12. (princ)
  13. );end defun

 
此选项的问题是,如果选择一个命令,它可以正常工作。如果您选择的大于on,则dim变量不会被设置回位。我需要它能够选择多重维度将其转换为3 plc十进制,并将dim变量设置回退出命令之前的状态。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:04:20 | 显示全部楼层
试试这个Bradb:
 
  1. (defun c:T3 (/ ss Objlst)
  2. (vl-load-com)
  3. (if (setq ss (ssget '((0 . "DIMENSION"))))
  4.    (progn
  5.      (setq objlst
  6.        (mapcar 'vlax-ename->vla-object
  7.          (vl-remove-if 'listp
  8.            (mapcar 'cadr
  9.              (ssnamex ss)))))
  10.      (mapcar
  11.        (function
  12.          (lambda (x)
  13.            (vla-put-UnitsFormat x acDimLDecimal))) ObjLst)
  14.      (mapcar
  15.        (function
  16.          (lambda (x)
  17.            (vla-put-PrimaryUnitsPrecision x acDimPrecisionThree))) ObjLst))
  18.    (princ "\n<< Nothing Selected >>"))
  19. (princ))
回复

使用道具 举报

12

主题

57

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 15:11:05 | 显示全部楼层
 
 
 
谢谢李,这很有效,但我需要更多。
 
我不理解visual lisp,所以我不知道在这个lisp上编辑什么。
 
我还需要3个命令
 
t3m更改为3plc并将文本移到外行(DIMTMOVE 0)
tf更改为分数(DIMLUNIT 5 DIMFRAC 1)
tfm更改为分数并将文本移到外行(DIMTMOVE 0)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 00:30 , Processed in 0.675472 second(s), 72 queries .

© 2020-2025 乐筑天下

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