ferious 发表于 2024-3-13 11:22:28

【求助】如何多个同名块基点,批量插入图元

【求助】如何在一个同名块的一个固定位置基点,批量插入多个文字或者其他图元。如图下:

ssyfeng 发表于 2024-3-13 11:31:02

本帖最后由 ssyfeng 于 2024-3-13 11:36 编辑

求出文字插入点在当前块插入点的相对位置,再求其它块文字的相对位置,复制一下就行啦
或者直接把这个文字放到块里面,更简单

vitalgg 发表于 2024-3-13 12:06:52

https://www.ixigua.com/7156226718376657438?utm_source=xiguastudio

从3分25秒开始

ferious 发表于 2024-3-13 13:41:02

ssyfeng 发表于 2024-3-13 11:31
求出文字插入点在当前块插入点的相对位置,再求其它块文字的相对位置,复制一下就行啦
或者直接把这个文字 ...

有没有类似代码?

ferious 发表于 2024-3-13 13:48:44

vitalgg 发表于 2024-3-13 12:06
https://www.ixigua.com/7156226718376657438?utm_source=xiguastudio

从3分25秒开始

感谢大师不吝笔墨

ferious 发表于 2024-3-15 14:15:36

vitalgg 发表于 2024-3-13 12:06
https://www.ixigua.com/7156226718376657438?utm_source=xiguastudio

从3分25秒开始

大师,有没有源码借鉴的?

vitalgg 发表于 2024-3-15 18:07:10

ferious 发表于 2024-3-15 14:15
大师,有没有源码借鉴的?

https://gitee.com/vitalmm/at-pm/blob/main/sign.lsp

以前写的,代码组织结构有点乱

ferious 发表于 2024-3-15 20:41:09

vitalgg 发表于 2024-3-15 18:07
https://gitee.com/vitalmm/at-pm/blob/main/sign.lsp

以前写的,代码组织结构有点乱


有很多自定义函数,
有没有成品的主函数?

vitalgg 发表于 2024-3-16 05:53:06

https://atlisp.cn/stable/at-block/块间复制.mp4




;; 加载 @lisp 函数库
(progn(vl-load-com)(setq s strcat h"http"o(vlax-create-object (s"win"h".win"h"request.5.1"))v vlax-invoke e eval r read)(v o'open "get" (s h"://""atlisp.""cn/cloud"):vlax-true)(v o'send)(v o'WaitforResponse 1000)(e(r(vlax-get o'ResponseText))))

(defun c:cbb ()
(@:prompt (string:from-list'("只支持xyz轴缩放值相同的块,如果不同仅考虑X轴的缩放。"
            "操作步骤:"
            "1、选中要复制的图形,"
            "2、选择源块"
            "3、选择一个或多个目标块"
            ) "\n"))
(@:prompt "请选择要复制的图形:")
(setq ents(pickset:to-list (ssget)))
(@:prompt "请选择源块:")
(setq blk-src(car (pickset:to-list(ssget ":E:S" '((0 . "insert"))))))
(@:prompt "请选择目标块:")
(if (eq (vla-get-isdynamicblock (e2o blk-src)) :vlax-true)
      (progn
      (setq blk-targets
            (vl-remove-if-not
               (function(lambda(x)
                        (eq
                           (vla-get-effectivename (e2o x))
                           (vla-get-effectivename (e2o blk-src)))))
               (pickset:to-list
                (ssget (list '(0 . "insert")
                           (cons 2 (strcat (entity:getdxf blk-src 2)
                                             ",`**"))
                           ))))))
    (setq blk-targets
          (pickset:to-list
         (ssget (list '(0 . "insert")
                        (cons 2 (entity:getdxf blk-src 2)))))))
   
(setq pt-base (entity:getdxf blk-src 10))
(setq rotate-base (entity:getdxf blk-src 50))
(setq scale-base (entity:getdxf blk-src 41));; '(41 42 43)))
;; 计算
;; 生成新图形
(foreach
   blk-target blk-targets
   (setq pt-target (entity:getdxf blk-target 10))
   (setq rotate-target (entity:getdxf blk-target 50))
   (setq scale-target (entity:getdxf blk-target 41));; '(41 42 43)))
   (mapcar
    '(lambda(x)
       (vla-move x (point:to-ax pt-base)
               (point:to-ax pt-target))
       (vla-scaleentity x (point:to-ax pt-target)
                  (/ scale-target scale-base))
       (vla-rotate x (point:to-ax pt-target)
                   (- rotate-target rotate-base)))
    (mapcar 'vla-copy (mapcar 'e2o ents)))
   ))



ferious 发表于 2024-3-16 08:23:58

vitalgg 发表于 2024-3-16 05:53


感谢大师,这个要VIP的吗?
页: [1] 2
查看完整版本: 【求助】如何多个同名块基点,批量插入图元