乐筑天下

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

[编程交流] 需要现场帮助

[复制链接]

23

主题

89

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
115
发表于 2022-7-6 09:15:38 | 显示全部楼层 |阅读模式
如何在每次设置新绘图页时都不运行代码的情况下,自动更新绘图页上SNUM和缝合的字段值(基于fieldeval)。文件应为“A.1.1一楼平面图.dwg”。谢谢
 
示例代码:
  1. (DEFUN c:TEST ()
  2. (vl-load-com)
  3. (setq DNAME (substr (getvar 'dwgname) 1 (- (strlen (getvar 'dwgname)) 4)))
  4. (setq SNUM (substr dname 1 (vl-string-search " " dname)))
  5. (setq STITLE (substr DNAME (+ (vl-string-search " " dname) 2) 99))
  6. (princ)
  7. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:39:06 | 显示全部楼层
UPDATEFIELD命令?
回复

使用道具 举报

23

主题

89

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
115
发表于 2022-7-6 09:48:57 | 显示全部楼层
是的,李。谢谢SNUM和STITLE仅存储第一张纸的值,而不存储在第二张纸上。这是我一直在做的过程。
 
1、新建一张图纸,命名为“a.1.1一层平面图”。
运行例程,将SNUM和STITLE变量作为字段插入并保存图形。
 
2、使用“另存为”创建新图纸“a.1.2二层平面图”。
 
3.运行例程,使SNUM和STITLE得到更新,并使用UPDATEFIELD命令
更新图形上的字段值。
 
4.执行第2步和第3步,直到完成绘图页的设置。
 
有没有办法跳过第3步?保存图形时自动更新字段值(fieldeval=2)。
我尝试了diesel,但没有成功,因为我们有一个糟糕的命名约定“Project#a-1-1 SheetName”。我需要正确地输入DNAME,以便正确显示SNUM。
基于我们的标准。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:57:36 | 显示全部楼层
哦,我明白了-您正在字段表达式中使用LISP变量。这并不理想,因为变量只会保留在活动的绘图任务中,因此如果没有运行LISP(例如在客户端计算机上),字段将无法正确显示。
 
我无法立即找到使用DIESEL对字段进行编码的方法,因此我可以看到的唯一替代方法是使用命令reactor运行LISP程序,在保存之前更新变量。
 
请注意,您的代码可以更改为该值,因为如果图形名称不包含空格,则当前会出错。
 
  1. (defun c:test ( / name pos )
  2.    (setq name (vl-filename-base (getvar 'DWGNAME)))
  3.    (if (setq pos (vl-string-search " " name))
  4.        (setq snum   (substr name 1 pos)
  5.              stitle (substr name (+ pos 2))
  6.        )
  7.    )
  8.    (princ)
  9. )
  10. (vl-load-com)
回复

使用道具 举报

23

主题

89

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
115
发表于 2022-7-6 10:15:37 | 显示全部楼层
谢谢你给李的小费,我会继续的。再次感谢。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:20:13 | 显示全部楼层
 
如果“项目#”是固定长度,则可以使用DIESEL,但这是一个相当弱的假设。
 
例如,如果“项目#”的长度为8:
 
  1. $(substr,$(getvar,DWGNAME),1,
  2. $(substr,$(getvar,DWGNAME),10,$(-,$(strlen,$(getvar,DWGNAME)),13))
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 06:32 , Processed in 0.597296 second(s), 64 queries .

© 2020-2025 乐筑天下

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