乐筑天下

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

[编程交流] 更改

[复制链接]

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:22:14 | 显示全部楼层 |阅读模式
一段时间以来,我一直在努力寻找现有的lisp例程来执行以下操作(断断续续)。虽然我发现一些会改变图形中每一段文字的属性值或文字宽度,但这不是我需要做的。
 
我需要一个lisp例程,该例程将根据客户端标题栏使用当前属性标记和块名手动修改。它不需要手动选择(用户输入),因为这将在脚本中用于批量运行lisp例程。
 
总而言之,我希望能够指定块名和属性标记名(在指定的块中),并能够在图形中设置文本宽度因子,以考虑每个客户端请求的更长文件名。这仅适用于所有图形中的1属性。
 
任何帮助都将不胜感激。
 
下面是一个示例:
 
标题栏有:
 
属性:文件名
标签:图纸编号
值:通过字段链接到实际文件名
 
当前文本宽度因子为。8,这是必须的。7以适合标题栏空间。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:32:07 | 显示全部楼层
这可能会有所帮助
 
  1. (setq ss1 (ssget)) ; pick a block
  2. (foreach att (vlax-invoke (vlax-ename->vla-object (ssname SS1 0 )) 'getattributes)
  3. (if (= tagname (strcase (vla-get-tagstring att)))
  4. (vla-put-scalefactor att X) ; x is new scale factor
  5. )
  6. )
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:44:25 | 显示全部楼层
感谢您的快速回复;然而,这仍然需要我手动选择属性。我真的需要一种将标记传递给函数的方法。我发现的和/或拼合在一起的所有内容都使用了nenetsel,但我还没有找到一种方法来自动选择嵌套在块中的属性标记,而不使用nenetsel。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 17:49:37 | 显示全部楼层
也许命令:巴特曼会工作吗?
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:54:55 | 显示全部楼层
 
这不允许我使用脚本来自动更改一个属性的文本宽度。
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:04:16 | 显示全部楼层
这是我最近发现并稍加修改的一个惯例;然而,我仍然无法找到替代第#6行的方法,使用NENTSEL将属性标记传递到函数中,而不需要用户输入。
 
  1. (defun widedit (/ aDoc x attent uwd option tag blk bn)
  2. (vl-load-com)
  3. (setq aDoc (vla-get-ActiveDocument (vlax-get-acad-object)))
  4. (if (and (setq x (car (nentsel "\nSelect attribute: ")))
  5.         (eq "ATTRIB" (cdr (assoc 0 (entget x))))
  6.         (setq attent (vlax-ename->vla-object x))
  7.        
  8.         ;; Display Current Text Width Factor
  9.         (princ (strcat "\nCurrent Width is <" (rtos (vla-get-scalefactor attent) 2)"> "))
  10.        
  11.         ;; Set width to 0.7
  12.         (setq uwd 0.7)) ;(getreal "\nEnter new width: ")))
  13.        
  14.         (progn
  15.                 (initget "Y N")
  16.                 (setq option "N")
  17.                         ;(cond ((getkword "\nApply width to all Attribute of the same block? [Yes/no] <N>: "))( "N" )))
  18.                 (if (eq option "N")
  19.                         (vla-put-scalefactor attent uwd)
  20.                         (progn
  21.                         (setq tag (vla-get-tagstring attent))
  22.                         (setq Blk
  23.                                 (vla-ObjectIdToObject aDoc
  24.                                         (vla-get-OwnerId attent)
  25.                                 )
  26.                                
  27.                                 Bn (vla-get-effectivename blk)
  28.                         )
  29.                         (vlax-for itm (vla-item (vla-get-blocks aDoc) bn)
  30.                                 (if
  31.                                         (and (eq (vla-get-objectname itm) "AcDbAttributeDefinition")
  32.                                                 (eq (vla-get-tagstring itm) tag)
  33.                                         )
  34.                                 (vla-put-scalefactor itm uwd)
  35.                                 )
  36.                         )
  37.                         (vlax-for layout (vla-get-layouts aDoc)
  38.                                 (vlax-for i (vla-get-block layout)
  39.                                         (if (and
  40.                                                         (eq (vla-get-objectname i) "AcDbBlockReference")
  41.                                                         (eq (Vla-get-hasAttributes i) :Vlax-true)
  42.                                                         (eq (vla-get-effectivename i) bn))
  43.                
  44.                                                 (foreach itm (vlax-invoke i 'GetAttributes)
  45.                                                         (if (eq (vla-get-tagstring itm) tag)
  46.                                                                 (vla-put-scalefactor itm uwd))))))
  47.                         )
  48.                 ) ;; end if
  49.         ) ;; end progn
  50.         (vl-some
  51.         '(lambda (j) (if (null (eval (car j))) (princ (cadr j))
  52.         ))
  53.         '((x "\n<<None Selected>>")
  54.         (attent "\n<<Selected object not an Attribute>>")
  55.         (uwd "\n<<No Width value>>"))
  56.         )
  57. )
  58. (princ)
  59. ) ;; end defun
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:11:52 | 显示全部楼层
请尝试以下操作:
使用标记名(不区分大小写)和新属性宽度因子进行评估,例如:
  1. 3
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:17:45 | 显示全部楼层
这很有效。非常感谢。我非常感谢你的帮助!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:24:42 | 显示全部楼层
不客气!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 03:23 , Processed in 0.543284 second(s), 70 queries .

© 2020-2025 乐筑天下

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