Tharwat 发表于 2022-7-5 19:00:13

iconeo,正如我之前提到的,你有一个额外的单词,那就是comm,它是不需要的
 
对代码稍作修改。
 

(defun c:qwremake (/ s en e plw)
(if (and (setq s (entsel "\nSelect any object: "))
          (wcmatch (setq en (cdr (assoc 0 (setq e (entget (car s))))))
                   "LINE,*POLYLINE,CIRCLE,ARC,INSERT"
          )
   )
   (progn
   ;; layer
   (setvar 'CLAYER (cdr (assoc 8 e)))
   ;; linetype
   (if (cdr (assoc 6 e))
       (setvar 'CELTYPE (cdr (assoc 6 e)))
       (setvar 'CELTYPE "ByLayer")
   )
   ;; color
   (if (cdr (assoc 62 e))
       (setvar 'CECOLOR (itoa (cdr (assoc 62 e))))
       (setvar 'CECOLOR "ByLayer")
   )
   ;; polyline width
   (if (cdr (assoc 43 e))
       (progn
         (setq plw (getvar 'PLINEWID))
         (setvar 'PLINEWID (cdr (assoc 43 e)))
       )
   )
   (cond ((wcmatch en "LINE,CIRCLE,ARC")
            (command en)
         )
         ((eq en "INSERT")
            (command "_.copy"
                     s
                     ""
                     (cadr s)
                     "\\"
            )
         )
         ((wcmatch en "*POLYLINE") (command "pline"))
   )
   (setvar 'PLINEWID plw)
   )
)
(princ)
)

iconeo 发表于 2022-7-5 19:01:25

在继续之前,非常感谢您的技能和时间!
 
我真的很喜欢你处理积木的方式。我有一个使用insert的有效解决方案,但后来我不得不处理我不想处理的缩放和旋转,而你的解决方案在动态块和vis状态下工作得更好。
 
然而,关于PLINEWID,我无法使你的lisp正常工作。在设置plw后,它似乎不想将值设置为PLINEWID。。。不知道为什么,因为我尝试了不同的方法。
 
无论如何,我添加了椭圆支持,现在我将处理图案填充。
 
(defun c:qwremake (/ s en e plw)
(if (and (setq s (entsel "\nSelect any object: "))
   (wcmatch (setq en (cdr (assoc 0 (setq e (entget (car s))))))
          "LINE,CIRCLE,ARC,ELLIPSE,*POLYLINE,INSERT"
   )
   )
   (progn
   ;; layer
   (setvar 'CLAYER (cdr (assoc 8 e)))
   ;; linetype
   (if (cdr (assoc 6 e))
(setvar 'CELTYPE (cdr (assoc 6 e)))
(setvar 'CELTYPE "ByLayer")
   )
   ;; color
   (if (cdr (assoc 62 e))
(setvar 'CECOLOR (itoa (cdr (assoc 62 e))))
(setvar 'CECOLOR "ByLayer")
   )
   ;; polyline width
   (if (cdr (assoc 43 e))
(setvar 'PLINEWID (cdr (assoc 43 e)))
   )
   (cond ((wcmatch en "LINE,CIRCLE,ARC,ELLIPSE")
   (command en)
    ) ;end condition
    ((eq en "INSERT")
   (command "_.copy"
              s
              ""
              (cadr s)
              "\\"
   )
    ) ;end condition
    ((wcmatch en "*POLYLINE")
   (command "pline")
    ) ;end condition
   )
   )
)
(prompt "\nObject not compatible.")
(princ)
)
 
非常感谢。

prodromosm 发表于 2022-7-5 19:05:11

iconeo。代码不错。还不使用文字、样条线和图案填充。。。
 
谢谢

iconeo 发表于 2022-7-5 19:08:22

 
嘿,谢谢。最初的海报创意和塔尔瓦特得到了巨大的帮助。
 
计划添加对文字、尺寸、图案填充和引线的支持。你认为我还应该解决其他问题吗?

ttray33y 发表于 2022-7-5 19:11:07

 
          ((eq en "INSERT")
   (command "_.copy"
              s
              ""
              (cadr s)
              "\\"
   )
    ) ;end condition

代替“复制”,重新编写并尝试插入函数。

iconeo 发表于 2022-7-5 19:16:25

 
对于我的用例来说,副本效果更好。然后我就不必去处理动态块、旋转、缩放等的视觉状态。
 
如果有人想走插入路线,李-麦克的助手lisp例程可以很好地用于动态块。
 
谢谢

ttray33y 发表于 2022-7-5 19:17:32

更多的想法不断涌现,我们都知道有很多方法可以编写这个函数。。

iconeo 发表于 2022-7-5 19:21:26

我被领导者和维度困住了。如何访问用户箭头覆盖信息?我相信它是在扩展数据中,我不知道如何正确地阅读它,甚至不知道如何使用它。感谢您的帮助。
 
谢谢

ttray33y 发表于 2022-7-5 19:25:37

为qleader试试这个,抱歉这是一个noob例程。
 

(defun leader_a ()
(progn
   (setq dim_style (cdr (assoc 3 alist))
         lyr (cdr (assoc 8 alist))
   )   
   (command "-dimstyle" "r" dim_style
               "-layer" "s" lyr ""
               "qleader")
)
)
(defun c:QW ()
(setvar "cmdecho" 1)   
(setq alist (entget (car (entsel)))
      ent (cdr (assoc 0 alist))
)   
(if (= ent "LEADER") (leader_a))
(princ)         
)

prodromosm 发表于 2022-7-5 19:28:49

有人能添加这样的内容吗?
 
(setq convert (cond ( (getkword "\nconvert to polylines? <N>: ") ) ( "No" )))
         (if (eq "Yes" convert)
             (command "_.pedit" "_M" 2bjoin"" "_J" "" ""))
         )
   )
   (setvar 'peditaccept ped)
)
页: 1 [2]
查看完整版本: 请求-重新创建此lisp