明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1614|回复: 2

[请教]这个程序请问怎么改进?对于justify 的text就达不到目的。谢谢

[复制链接]
发表于 2003-10-28 20:23:00 | 显示全部楼层 |阅读模式
刚才的那个问题多谢了。
请问这个程序请问怎么改进?对于采用justify 的text(如bottom center.有两个特征点10、11,我想按照dxf为11的那点缩放,就达不到目的)谢谢。
(defun c:ms ()
  (setvar "cmdecho" 0)
  (prompt "\n选择文字、图块、园或椭圆:")
  (setq        ss1 (ssget
              '((-4 . "<or")
                (0 . "text")
                (0 . "insert")
                (0 . "circle")
                (0 . "ellipse")
                (-4 . "or>")
               )
            )
  )
  (setq ssl (sslength ss1))
  (setq n (getreal "\n输入缩放的比例:"))
  (setq ii 0)
  (while (< ii ssl)
    (setq ename (ssname ss1 ii))
    (setq e1 (entget ename))
    (setq pt1 (cdr (assoc 10 e1)))
    (command "scale" ename "" pt1 n)
    (setq ii (1+ ii))
  )
  (princ)
)
发表于 2003-10-29 01:51:00 | 显示全部楼层
对于你的程序
3stone发表于2003-10-28 20:23:00;;;刚才的那个问题多谢了。
;;;请问这个程序请问怎么改进?
;;;对于采用justify 的text(如bottom center.有两个特征点10、11,我想按照dxf为11的那点缩放,就达不到目的)谢谢
1        (DEFUN c:m



改进1        4-12句可以改为(setq ss1 (ssget '((0 . "text,insert,circle,ellipse"))))。
改进2        13句在使用SSLENGTH时,请先确定选择集不是空的。
改进3        13句关于使用变量ssl,与变量SS1很容易让人误读。
改进4        14句输入的变量只能是正数,先使用(initget 7)。
改进5        可以使用repeat代替while,(repeat (if ss1 (sslength ss1) 0),可以减少一变量ssl。
改进6        目的是以dxf为11的点进行缩放?可你选择的实体有些是没有11的,如circle。
改进7        目的中言明是使用DXF码11,可程序中却使用10?

抛砖引玉。
发表于 2003-10-29 08:21:00 | 显示全部楼层
关于程序的改进,见楼上的,下面是实现TEXT按11组码放大,其它则按10
  1. (defun c:ms ( / ss1 ssl n ii ename e1 pt1)
  2.   (setvar "cmdecho" 0)
  3.   (prompt "\n选择文字、图块、园或椭圆:")
  4.   (setq ss1 (ssget
  5.        '((-4 . "<or")
  6.   (0 . "text")
  7.   (0 . "insert")
  8.   (0 . "circle")
  9.   (0 . "ellipse")
  10.   (-4 . "or>")
  11.         )
  12.      )
  13.   )
  14.   (setq ssl (sslength ss1))
  15.   (setq n (getreal "\n输入缩放的比例:"))
  16.   (setq ii 0)
  17.   (while (< ii ssl)
  18.     (setq ename (ssname ss1 ii))
  19.     (setq e1 (entget ename))
  20.     (if (and (= (cdr (assoc 0 e1)) "TEXT") (setq pt1 (assoc 11 e1)))
  21.       (setq pt1 (cdr pt1))
  22.       (setq pt1 (cdr (assoc 10 e1)))
  23.     )
  24.     (command "scale" ename "" pt1 n)
  25.     (setq ii (1+ ii))
  26.   )
  27.   (princ)
  28. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-10-2 14:21 , Processed in 0.169915 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表