乐筑天下

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

[编程交流] *帮助*尝试匹配块s

[复制链接]

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 16:35:08 | 显示全部楼层
 
只需反转DXF列表即可执行以下相反的任务:
替换此:
  1. (entmod (append en1 (list (assoc 41 en2) (assoc 42 en2) (assoc 43 en2))))

有了这个:
  1. (entmod (append en2 (list (assoc 41 en1) (assoc 42 en1) (assoc 43 en1))))
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 16:39:55 | 显示全部楼层
在这里,请尝试以下代码:
 
  1. (defun c:rescaleblkbycorners ( / blk p1 p2 ll ur minpt maxpt )
  2. (vl-load-com)
  3. (prompt "\nSelect block you want to rescale on unlocked layer...")
  4. (setq blk (ssname (ssget "_+.:E:S:L" '((0 . "INSERT"))) 0))
  5. (if blk
  6.    (progn
  7.      (setq p1 (getpoint "\nPick or specify corner point : "))
  8.      (setq p2 (getcorner p1 "\nPick or specify other corner point : "))
  9.      (setq ll (list (apply 'min (mapcar 'car (list p1 p2))) (apply 'min (mapcar 'cadr (list p1 p2)))) ur (list (apply 'max (mapcar 'car (list p1 p2))) (apply 'max (mapcar 'cadr (list p1 p2)))))
  10.      (entupd (cdr (assoc -1 (entmod (subst (cons 41 1.0) (assoc 41 (entget blk)) (entget blk))))))
  11.      (entupd (cdr (assoc -1 (entmod (subst (cons 42 1.0) (assoc 42 (entget blk)) (entget blk))))))
  12.      (entupd (cdr (assoc -1 (entmod (subst (cons 43 1.0) (assoc 43 (entget blk)) (entget blk))))))
  13.      (vla-getboundingbox (vlax-ename->vla-object blk) 'minpt 'maxpt)
  14.      (mapcar 'set '(minpt maxpt) (mapcar 'safearray-value (list minpt maxpt)))
  15.      (entupd (cdr (assoc -1 (entmod (subst (cons 41 (/ (- (car ur) (car ll)) (- (car maxpt) (car minpt)))) (assoc 41 (entget blk)) (entget blk))))))
  16.      (entupd (cdr (assoc -1 (entmod (subst (cons 42 (/ (- (cadr ur) (cadr ll)) (- (cadr maxpt) (cadr minpt)))) (assoc 42 (entget blk)) (entget blk))))))
  17.      (vla-getboundingbox (vlax-ename->vla-object blk) 'minpt 'maxpt)
  18.      (mapcar 'set '(minpt maxpt) (mapcar 'safearray-value (list minpt maxpt)))
  19.      (vla-move (vlax-ename->vla-object blk) (vlax-3d-point minpt) (vlax-3d-point ll))
  20.    )
  21. )
  22. (princ)
  23. )

 
我想到了这一点,我写的代码,将要求您选择块和2个角点,以符合所需的大小。。。所以实际上你不需要参考块,只需要矩形,甚至什么都不需要,只要试着选取2个点,它就会缩放以匹配那个边界框。。。
 
您好,M.R。
回复

使用道具 举报

56

主题

175

帖子

51

银币

后起之秀

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

铜币
352
发表于 2022-7-5 16:42:51 | 显示全部楼层
全部的
 
非常感谢你的帮助。它现在对我有效。你们和CADTutor是需要帮助时最好的地方。它还没有让我失望!
 
再次感谢先生们,
大卫
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-5 16:50:32 | 显示全部楼层
请阅读代码发布指南,并编辑代码以包含在代码标签中。[NOPARSE]
  1. Your Code Here[/NOPARSE]
=
  1. Your Code Here
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 00:32 , Processed in 0.456146 second(s), 58 queries .

© 2020-2025 乐筑天下

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