乐筑天下

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

[编程交流] 如何从差异中获取值

[复制链接]

29

主题

196

帖子

168

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2022-7-6 11:29:46 | 显示全部楼层 |阅读模式
嗨,伙计们。。
 
这不是一项重要的任务,但它每天都会帮我一点忙。。。
 
我想找到一个例程,允许我在模型或图纸空间中拾取一个对象,文字、多行文字、块、引线或尺寸,并自动更新dimscale因子,取拾取的对象的值。
 
-从文字或多行文字高度,Dimscale=(文字高度)*8
-从块x值因子,Dimscale=(块x值因子)正值(如果为负值)
-从标注或引线,Dimscale=Dimscale因子
 
这将用于使用lispt更新其他对象,从另一个对象获取Dimscale。
回复

使用道具 举报

2

主题

74

帖子

72

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 11:33:49 | 显示全部楼层
这意味着维度或引线的“Dimscale因子”,我假设它是一个LinearScaleFactor,但它仅在维度上?
  1. (defun get_dimscal ( obj / type_obj)
  2. (vl-load-com)
  3. (if (setq type_obj (cdr(assoc 0 (entget obj ))))
  4.    (cond
  5.      ((wcmatch type_obj "*TEXT")(* (cdr(assoc 40 (entget obj))) )
  6.      ((eq type_obj "INSERT")(abs (cdr (assoc 41 (entget obj)))))
  7.      ((eq type_obj "DIMENSION")(vla-get-LinearScaleFactor(vlax-ename->vla-Object obj)))
  8.      (T T)
  9.      )))

 
功能测试已选择高度为5的М文本
回复

使用道具 举报

29

主题

196

帖子

168

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2022-7-6 11:37:47 | 显示全部楼层
 
嗯。。。我不知道。。。我会测试它添加领导类型。。。然后检查发生了什么。。
 
但这似乎是正确的代码。。。但我不能测试它。。。因为我不是程序员,我只是不知道问题出在哪里。。
 
我没有将其作为子功能进行检查,只是添加了c:
但我有这个
 
命令:get\u dimscal
; 错误:参数太少
 
有什么想法吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:40:31 | 显示全部楼层
该函数是一个子函数,需要一个实体(ename)参数。
回复

使用道具 举报

29

主题

196

帖子

168

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2022-7-6 11:44:27 | 显示全部楼层
 
嗯,我明白。。。但无论我试着用Lisp程序的Lisp程序来完成它多少次。。。我的编码知识相当基础。。。。我想我的下一步将是阅读和理解手册,或只是试图找到一个类似的lisp来理解它。。。但是。。。
 
到目前为止,这是一个良好的开端。
 
我想差不多了
 
  1. ;;
  2. (defun get_dimscal ( obj / type_obj)
  3. (vl-load-com)
  4. (if (setq type_obj (cdr(assoc 0 (entget obj ))))
  5.    (cond
  6.      ((wcmatch type_obj "*TEXT")(* (cdr(assoc 40 (entget obj))) )
  7.      ((eq type_obj "INSERT")(abs (cdr (assoc 41 (entget obj)))))
  8.      ((eq type_obj "DIMENSION")(vla-get-LinearScaleFactor(vlax-ename->vla-Object obj)))
  9.      (T T)
  10.      )))
  11. (defun c:ddddd ()
  12. (princ (get_dimscal (car (entsel))))
  13. )

 
我得到了这个值,但是如何用它来改变dimscale变量呢?
 
哦哦。。。
 
我得到了它。。
 
  1. ;; It automatically changes the dimscale factor taking it from a
  2. ;; selected object
  3. ;; Geobuilder -- 2010
  4. ;; [url]http://www.cadtutor.net/forum/showthread.php?p=304557#post304557[/url]
  5. ;; SUB-FUNCTION
  6. (defun get_dimscal ( obj / type_obj)
  7. (vl-load-com)
  8. (if (setq type_obj (cdr(assoc 0 (entget obj ))))
  9.    (cond
  10.      ((wcmatch type_obj "*TEXT")(* (cdr(assoc 40 (entget obj))) )
  11.      ((eq type_obj "INSERT")(abs (cdr (assoc 41 (entget obj)))))
  12.      ((eq type_obj "DIMENSION")(vla-get-LinearScaleFactor(vlax-ename->vla-Object obj)))
  13.      (T T)
  14.      )))
  15. (defun c:dre ()
  16. (setvar "dimscale" (get_dimscal (car (entsel))))
  17. )

 
你们这些家伙。。。。效果很好
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:49:45 | 显示全部楼层
GeoBuilder发布了一个如何使用它的示例
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:51:03 | 显示全部楼层
吉尔索托,
 
不确定您真正想要做什么,或者在维度/领导者方面需要什么,但如果我理解正确:
 
  1. (defun c:MrGilsoto (/ dxf ent)
  2. (defun dxf (code ent) (cdr (assoc code (entget ent))))
  3. (cond (  (setq ent (car (entsel)))
  4.           (setvar 'DIMSCALE
  5.             (cond (  (wcmatch (dxf 0 ent) "TEXT,MTEXT") (* 8. (dxf 40 ent)))
  6.                   (  (eq "INSERT" (dxf 0 ent)) (dxf 41 ent))
  7.                         
  8.                   (  (getvar "DIMSCALE"))))))
  9. (princ))
回复

使用道具 举报

29

主题

196

帖子

168

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2022-7-6 11:53:46 | 显示全部楼层
哦。。。
 
是的,我在维度和领导者方面有问题。。。
哎哟。。。我只是去张贴这个帖子没有太多的调查。。。
关于尺寸和引线,我需要运行命令,而不是获取LinearScaleFactor,对于这些对象,我需要运行
命令“dimstyle”“restore”。因此dimscale值得到更新。
 
如果我能自己做,我会检查一下。
 
 
 
努普。。。我在Geobuilder的lisp中尝试了该命令和vl cmdf,但在输入错误时得到了格式不正确的列表。
 
我在你的Lisp中添加了一行尺寸,Lee,但我不知道尺寸样式中dimscale因子的dxf代码。。。我又有点困了,但块、文本和多行文字在两种lisp例程中都很好地工作。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:58:03 | 显示全部楼层
这将根据选定对象的dimstyle设置DIMSCALE,但不使用恢复:
 
  1. (defun c:MrGilsoto (/ dxf ent)
  2. (defun dxf (code ent) (cdr (assoc code (entget ent))))
  3. (cond (  (setq ent (car (entsel)))
  4.           (setvar 'DIMSCALE
  5.             (cond (  (wcmatch (dxf 0 ent) "TEXT,MTEXT") (* 8. (dxf 40 ent)))
  6.                   (  (eq "INSERT" (dxf 0 ent)) (dxf 41 ent))
  7.                   (  (wcmatch (dxf 0 ent) "DIMENSION,*LEADER")
  8.                      (cdr (assoc 40 (tblsearch "DIMSTYLE" (dxf 3 ent)))))
  9.                   (  (getvar "DIMSCALE"))))))
  10. (princ))

 
PS>到底是做什么的:“ouk”和“nooup”,。。意思是
回复

使用道具 举报

29

主题

196

帖子

168

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2022-7-6 12:02:12 | 显示全部楼层
jjajaja,也加上这个:
是的。。
 
他们的意思是
哦。。。哎哟。。。平均ok
无。。。没错。。表示否
是的。。。是的,是的
 
 
 
 
是的。。。这就是我的意思。。。现在我有了一个全新的工具来更新我的东西。。。
 
谢谢李。。。。现在我可以休息一下,然后检查另一个。。。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 02:19 , Processed in 0.474601 second(s), 72 queries .

© 2020-2025 乐筑天下

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