乐筑天下

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

[编程交流] Flter非均匀缩放blo

[复制链接]

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:18:00 | 显示全部楼层
到现在为止,一直都还不错
 
您不需要while函数,函数的返回必须是变量ss,而不是实体名和几个小mod。
继续编码,不管你会有多少错误。
 
看一看。
 
  1. (defun newss  (/ ss i ename)
  2. (if (setq ss (ssget (list '(0 . "INSERT"))))
  3.    (repeat (setq i (sslength ss))
  4.      (setq ename (ssname ss (setq i (1- i))))
  5.      (if (not (= (cdr (assoc 41 (entget ename)))
  6.                  (cdr (assoc 42 (entget ename)))
  7.                  (cdr (assoc 43 (entget ename))))
  8.               )
  9.        (ssdel ename ss)
  10.        )
  11.      )
  12.    (alert "\nNothing select. Try again.")
  13.    )
  14. ss
  15. )
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 18:21:00 | 显示全部楼层
也许 吧:
 
  1. [b][color=BLACK]([/color][/b]defun c:noteq [b][color=FUCHSIA]([/color][/b]/ ss i en ed[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]setq neq [b][color=NAVY]([/color][/b]ssadd[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  3. [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget [color=#2f4f4f]"X"[/color] [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"INSERT"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  4.       [b][color=NAVY]([/color][/b]setq i 0[b][color=NAVY])[/color][/b]
  5.       [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname ss i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  6.              [b][color=MAROON]([/color][/b]setq ed [b][color=GREEN]([/color][/b]entget en[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  7.              [b][color=MAROON]([/color][/b]if [b][color=GREEN]([/color][/b]not [b][color=BLUE]([/color][/b]= [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 41 ed[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
  8.                          [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 42 ed[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
  9.                          [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 43 ed[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  10.                  [b][color=GREEN]([/color][/b]ssadd en neq[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  11.              [b][color=MAROON]([/color][/b]setq i [b][color=GREEN]([/color][/b]1+ i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  12. [b][color=FUCHSIA]([/color][/b]alert [b][color=NAVY]([/color][/b]strcat [color=#2f4f4f]"UnEqual Scaked Blocks Found = "[/color] [b][color=MAROON]([/color][/b]rtos [b][color=GREEN]([/color][/b]sslength neq[b][color=GREEN])[/color][/b] 2 0[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  13. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
 
全局neq选取集
 
-大卫
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:23:19 | 显示全部楼层
使用VL轻松比较X、Y和Z等,不需要记住assoc代码
 
; XEffectiveScaleFactor=1.0
; XScaleFactor=1.0
; YeEffectiveScaleFactor=2.0
; YScaleFactor=2.0
; ZeEffectiveScaleFactor=1.0
; ZScaleFactor=1.0
回复

使用道具 举报

36

主题

161

帖子

125

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
182
发表于 2022-7-5 18:27:33 | 显示全部楼层
谢谢塔瓦和大卫。
 
嗨,大卫。我的图形具有非均匀缩放的块。我使用您的代码进行测试。但要警惕 “找到不相等的缩放块=0”
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 18:28:46 | 显示全部楼层
 
糟糕的是,我忘记了/=有一个怪癖,即(/=1 2 2)返回零。
 
我修正了12号帖子中的代码
 
-大卫
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:31:01 | 显示全部楼层
是否要选择非均匀缩放的块,但忽略镜像块(即x比例因子为负的块)?
 
由于块比例存储为双精度,我建议在执行比较时使用具有一定公差的等函数,即:
  1. (defun c:selnublocks ( / i s x )
  2.    (if (setq s (ssget "_X" (list '(0 . "INSERT") (if (= 1 (getvar 'cvport)) (cons 410 (getvar 'ctab)) '(410 . "Model")))))
  3.        (repeat (setq i (sslength s))
  4.            (setq x (entget (ssname s (setq i (1- i)))))
  5.            (if (and (equal (abs (cdr (assoc 41 x))) (abs (cdr (assoc 42 x))) 1e-
  6.                     (equal (abs (cdr (assoc 41 x))) (abs (cdr (assoc 43 x))) 1e-
  7.                )
  8.                (ssdel (cdr (assoc -1 x)) s)
  9.            )
  10.        )
  11.    )
  12.    (sssetfirst nil s)
  13.    (princ)
  14. )
回复

使用道具 举报

36

主题

161

帖子

125

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
182
发表于 2022-7-5 18:36:42 | 显示全部楼层
 
我忽略镜像块。非常感谢李。如果我想选择均匀缩放的块,只需将“等于”替换为“/”,对吗?
 
提到镜像块,我想起了一个问题。
http://www.cadtutor.net/forum/showthread.php?96562-Lee-s-MirrorBlock。lsp-have-a-bug
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:38:01 | 显示全部楼层
 
我建议用(not)括住(and)表达式以反转条件。
回复

使用道具 举报

36

主题

161

帖子

125

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
182
发表于 2022-7-5 18:41:58 | 显示全部楼层
 
李,再次谢谢你。
 
这样地?
  1. (if
  2.                         (not
  3.                                 (and (equal (abs (cdr (assoc 41 x))) (abs (cdr (assoc 42 x))) 1e-
  4.                                         (equal (abs (cdr (assoc 41 x))) (abs (cdr (assoc 43 x))) 1e-
  5.                                 )
  6.                         )
  7.                         (ssdel (cdr (assoc -1 x)) s)
  8.                 )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:46:23 | 显示全部楼层
确切地
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 05:00 , Processed in 0.382344 second(s), 70 queries .

© 2020-2025 乐筑天下

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