乐筑天下

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

[编程交流] 自动比例尺preserv

[复制链接]

29

主题

196

帖子

168

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2022-7-6 12:59:11 | 显示全部楼层 |阅读模式
你知道,我一直在使用这个由David制作并由我修改的lisp,这个将所有选定的块(法线、属性、动态和注释性)匹配到当前的dimscale。
 
这很漂亮,但现在我意识到一些块的x、y、z比例因子值为负值(镜像块),我希望保留这些值,因为通常需要镜像来确定方向,并且有必要在存在时保留负值。
 
还有其他块缩放例程,但这些例程使用
(命令“scale”eachblockinsertion“insertionpoint”(/newscale currentscale))
 
当使用这些例程时,它们会一直工作,直到找到负值,然后例程就会遇到这个消息
 
值必须为正且非零。
; 错误:功能已取消
 
有没有办法改变每个块的x、y、z值,但保留其原始值符号(正或负)?
 
有人知道怎么做吗?
 
  1. ;;; BXY by David Harrington; Modified by Paulo Gil Soto (added annotation scale reset to 1:1)
  2. ;;; updates selected blocks x,y and z values to current Dimscale
  3. ;;;
  4. ;;; Main Program
  5. ;;;
  6. (defun c:Bu (/ ss xs ys zs num x na lst editxyz_error olcmdecho old_err)
  7. (defun editxyz_error (msg)
  8. (if (or
  9.    (= msg "Function cancelled")
  10.    (/= msg "quit / exit abort")
  11.   )
  12.   (princ (strcat "Error: " msg))
  13. )
  14. (command ".UNDO" "E" "UNDO" "")
  15. (setq *error*  old_err
  16.     old_err  nil
  17. )
  18. (setvar "CMDECHO" olcmdecho)
  19. (princ)
  20. )
  21. (setq old_err *error*
  22.    olcmdecho (getvar "CMDECHO")
  23.    *error* editxyz_error
  24. )
  25. (setvar "CMDECHO" 0)
  26.        (setq dms (getvar "dimscale"))
  27. (command ".UNDO" "BE")  (prompt "\nSelect Blocks to match current dimscale: ")
  28. (cond
  29. ((setq ss (ssget '((0 . "INSERT"))))
  30.         (command "-objectscale" ss "" "add" "1:1" "" "cannoscale" "1:1")
  31.   (setq num (sslength ss))
  32.   (setq x 0)
  33.   (repeat num
  34.    (setq na (ssname ss x))
  35.    (setq lst (entget na))
  36.    (setq lst (subst (cons 41 dms) (assoc 41 lst) lst))
  37.    (setq lst (subst (cons 42 dms) (assoc 42 lst) lst))
  38.    (setq lst (subst (cons 43 dms) (assoc 43 lst) lst))
  39.    (entmod lst)
  40.    (entupd na)
  41.    (setq x (+ x 1))
  42.   )
  43. )
  44. )
  45. (command "attsync" "name" "*")
  46.        (command ".UNDO" "E")
  47. (setq *error* old_err)
  48. (setvar "CMDECHO" olcmdecho)
  49. (princ)
  50. )
回复

使用道具 举报

29

主题

196

帖子

168

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2022-7-6 14:17:49 | 显示全部楼层
 
 
有人自动呼叫“awerning”帮我解决了这个问题。。。
检查以下内容
-----------------
 
它工作,完美。。。
 
糟糕的是,我希望它与Attribute块一起使用,现在我意识到它将有点像镜像属性或其他东西。。。因此,它在选定的块中保留负值,但有点像镜像文本,使其无法读取(除非我们可以从右向左读取)
 
我试图缩放和保留的这些块是动态的,所以我想我会使用动态选项来移动文本,而不是镜像,这会导致需要保留负值。。。但我想这比把值改成正数要好,。。。
 
-----------------
哦,我知道了。。。
 
通过向每个动态块属性和掩码添加翻转动作,我可以避免使用属性。。。现在我没有理由镜像我的任何块,可以将所有块都保持在正的x,y,z值。
 
我开始喜欢动态积木。
Bu-。lsp
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 06:02 , Processed in 0.476115 second(s), 67 queries .

© 2020-2025 乐筑天下

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