JohnM 发表于 2022-7-6 11:02:58

我同意李的观点,但我是董事会成员,所以这里有一条鱼,请大家学习
注意:如果你有一个高度为0.0的样式,那么什么都不会做。
 
(defun c:txcng (/ sty stlst ht txss cnt ssl ent)
;;; get text styles
(vlax-for sty
       (vla-get-textstyles
       (vla-get-ActiveDocument
       (vlax-get-Acad-Object)
       );_get doc
       );_text collection
(setq stlst (cons (vla-get-Name Sty) stlst));_style list
       );_end for
;;; go thru list to change heights
(foreach item stlst
(setq ht (cdr(assoc 40 (tblsearch "Style" item))));_get original heigth
(if (> ht 0.0);_as long as no zero heigth
       (progn
(setq txss (ssget "_X" (list(cons 0"mtext,text")(cons 7 item))));-get all text for that style
       (if txss ;_if there is text
       (progn
(setq cnt 0);_counter
       (setq ssl (sslength txss));_# of items in selection set
       (while (< cnt ssl)
(setq snm (ssname txss cnt));_get entity name
       (setq ent (entget snm));_get entity info
       (if (/=(cdr(assoc 40 ent))ht);_if heigth id not = to original style ht
       (progn
(setq ent (subst (cons 40 ht) (assoc 40 ent) ent));_put in new heigth
       (entmod ent);_update entity
       );_progn
       );_if
(setq cnt (1+ cnt));_up counter by 1
       );_while
);_progn
       );_if
       );_progn
       );_if
       );_foreach
(princ)
);_defun

Tharwat 发表于 2022-7-6 11:05:33

你好,JohnM。
 
你的代码真的很棒,但如果用户的系统中没有(vl load com),它就会失败。
 
非常感谢。
 
塔瓦特

JohnM 发表于 2022-7-6 11:08:15

哎呀,我忘了,现在是啤酒时间,所以是啤酒的错。
糟糕的巴德!糟糕的巴德!
谢谢

Lee Mac 发表于 2022-7-6 11:12:36

在这种情况下,这里还有一条鱼,希望非常有效:
 

(defun c:TextHeightByStyle ( / l def )
;; © Lee Mac 2010
(
   (lambda ( data / x i ss e )
   (while (setq x (car data))
       (if (setq i -1 data (cdr data) ss
             (ssget "_X"
               (list
               (cons 0 "TEXT,MTEXT")
               (cons 7 (car x))
               (cons -4 "!=") (cons 40 (cdr x))
               )
             )
         )
         (while (setq e (ssname ss (setq i (1+ i))))
         (entupd
             (cdr
               (assoc -1
               (entmod
                   (subst
                     (cons 40 (cdr x)) (assoc 40 (entget e)) (entget e)
                   )
               )
               )
             )
         )
         )
       )
   )
   )
   (while (setq def (tblnext "STYLE" (null def)))
   (setq l
       (cons
         (cons (cdr (assoc 2 def))
         (cdr
             (assoc
               (if (zerop (cdr (assoc 40 def))) 42 40) def
             )
         )
         )
         l
       )
   )
   )
)
(princ)
)

David Bethel 发表于 2022-7-6 11:14:36

还有一个:
 
3
 
 
李,
 
我想关于如何教人钓鱼是有争议的。
 
学生是否可以通过以下方式更好地学习:
 
看到基本示例(希望有很好的文档记录或格式易于遵循)
被引导到参考材料
给出了要遵循的逻辑流程图
 
 
 
我想这可以归结为学生已经掌握了多少知识。我通常会从新手变成新手。否则他们就不会要求我们做一个简单的例行公事。
 
当我在头上看到某个东西时,我倾向于不尝试将其分解到第n个层次。如果只是稍微结束一点,那么我会花时间完全理解代码。
 
我的0.02美元-David

stevesfr 发表于 2022-7-6 11:16:59

我从以下概念中学习得最快:
**看到基本示例(希望有很好的文档记录或格式易于遵循)**
这对我来说是最好的。。。。
 
就我的美元。02
史蒂夫

Lee Mac 发表于 2022-7-6 11:20:05

David,我明白你的观点,但我过去一直不赞成直接给出完整的解决方案,因为许多人只是盲目地接受代码——因此我尝试了一种不同的方法。然而,我更喜欢只写代码,因为要引导别人找到解决方案需要做更多的工作。
 

David Bethel 发表于 2022-7-6 11:24:10

问题是“你的动机或目标是什么?”
 
是为了提高还是锻炼自己的技能?
是为了教书吗?
是为了学习吗?
是吹牛吗?
它是有益的还是慈善的?
 
 
我们来到这里的原因各不相同。
 
如果你认为自己被利用了,那么拒绝一个请求总是可以接受的。
 
因为CadTutor是一个以学习为导向的网站,我倾向于为初学者贡献一些基本的东西。这有助于保持我的技能更敏锐一点。我们可能都需要在评论方面做得更好,或者至少描述一个片段的大意,这样每个人都有机会学习。在粗糙的代码中,总是有精心制作的、嵌套得很深的、高度进化的代码片段,我们认为这是猫咪的叫声,但对一般的编码者来说是胡言乱语-大卫

David Bethel 发表于 2022-7-6 11:26:17

 
 
史提夫,
 
我同意样本或片段是我在学习环境中的选择。
 
我通过剖析AutoCAD 9和10版附带的代码来学习。直到90年代初Compuserve出现,你才找到一个关于autocad的对等论坛。
 
我很羡慕今天的新手,比如这里的论坛和Afralisp。这比苦读说明书要好得多。
 
我的0.04美元-David

antistar 发表于 2022-7-6 11:29:29

艾伦、大卫、李和约翰。。。
谢谢大家的支持,这是一次非常有益的教学,彻底解决了我的问题。
页: 1 [2]
查看完整版本: 更改所有文本的高度