notredave 发表于 2022-7-5 15:45:58

*帮助*尝试匹配块s

早上好,
 
我试着将左边的方块(2500-RBC)与右边的方块(测试)与x轴和y轴相匹配。我试过火柴块。lsp没有运气。我试过换房子,但运气不好。有人能帮我在不破坏方块(2500-RBC)的情况下进行x轴和y轴匹配吗?
 
提前感谢您,
大卫
测试。图纸

Tharwat 发表于 2022-7-5 15:53:20

你好
 
像这样的?

(defun c:matchxy (/ en1 en2)
(and (setq en1
             (car
               (entsel
               "\nSelect 1st block to move to next block's X & Y :"
               )
             )
      )
      (or (= (cdr (assoc 0 (setq en1 (entget en1)))) "INSERT")
          (alert "Invlaid object !")
      )
      (setq en2 (car (entsel "\nSelect 2nd block :")))
      (or (= (cdr (assoc 0 (setq en2 (entget en2)))) "INSERT")
          (alert "Invlaid object !")
      )
      (entmod (subst (assoc 10 en2) (assoc 10 en1) en1))
)
(princ)
)

ronjonp 发表于 2022-7-5 15:56:06

你是指尺寸,还是像塔瓦特那样匹配的插入点?

Tharwat 发表于 2022-7-5 16:01:57

但是,如果您在更改XYZ的比例之后,那么只需将下面一行代码替换为我之前发布的上面发布的代码中的一行。

(entmod (append en1 (list (assoc 41 en2) (assoc 42 en2) (assoc 43 en2))))

notredave 发表于 2022-7-5 16:07:58

我指的是要匹配的尺寸

ronjonp 发表于 2022-7-5 16:11:15

使用该测试图形,您需要获取边界框的大小,然后应用。这两个区块在同一比例下大小不同。

notredave 发表于 2022-7-5 16:13:52

Thawart,我尝试了你附加的代码
 
(定义c:matchxy(/en1 en2)
(和(setq en1
(汽车
(entsel)
“\n选择第一个块移动到下一个块的X和Y:”
)
)
)
(或(=(cdr(assoc 0(setq en1(entget en1)))“插入”)
(警报“Invlaed object!”)
)
(setq en2(car(entsel“\n选择第二块:”))
(或(=(cdr(assoc 0(setq en2(entget en2)))“插入”)
(警报“Invlaed object!”)
)
(entmod(追加en1(列表(assoc 41 en2)(assoc 42 en2)(assoc 43 en2)))
)
(普林斯)
)
 
但是,当我单击第一个块(较大的块)以匹配较小的块时,它变大了

notredave 发表于 2022-7-5 16:20:15

ronjonp,你能给我解释一下怎么做(抓住边界框的侧面并申请)吗?这对我来说是新鲜事。非常感谢。

marko_ribar 发表于 2022-7-5 16:23:41

你需要一个代码,还是只需要那个DWG。。。如果是第二个,我会附上给你。。。将RS-2500块重置为比例1,1,1,然后根据测试块的尺寸重新计算每个X,Y比例因子是什么,这相当简单。。。
测试。图纸

notredave 发表于 2022-7-5 16:30:44

marko_ribar,谢谢!如果你有这样的代码,我很乐意在其他需要扩展的代码上使用它。谢谢你,谢谢所有回复的人。我真的很感激!
页: [1] 2
查看完整版本: *帮助*尝试匹配块s