找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 642|回复: 8

[编程申请]:请高手看看这段代码

[复制链接]
发表于 2005-11-29 12:15:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
(DEFUN C:CCYZT (/ TXTSS L_TXTSS CT MY_ALL TXT FY TH MY MY_ALL CT INDEX Y_MIN
               Y_MAX KEY CT NUM TXTENT TXT GC72 GC73 U_O U_FX U_FY U_FZ W_O
               NEWFP TXT
            )
  (PRINC "\n请选择需要排列的文字:")
  (SETQ TXTSS (SSGET '((0 . "TEXT")))
        L_TXTSS (SSLENGTH TXTSS)
        CT 0
        MY_ALL NIL
  )
  (WHILE (< CT L_TXTSS)
    (SETQ TXT (ENTGET (SSNAME TXTSS CT))
          FY (CADR (TRANS (CDR (ASSOC 10 TXT)) 0 1))
          TH (CDR (ASSOC 40 TXT))
          MY (+ FY (/ TH 2))
          MY_ALL (APPEND
                   MY_ALL
                   (LIST MY)
                 )
          CT (1+ CT)
    )
  )
  (SETQ INDEX (VL-SORT-I MY_ALL '<)
        Y_MIN (NTH (NTH 0 INDEX) MY_ALL)
        Y_MAX (NTH (NTH (1- L_TXTSS) INDEX) MY_ALL)
  )
  (INITGET 128 "S I")
  (SETQ KEY (GETKWORD "\n[输入行间距(I)/根据所选文字确定行间距(S)]<S>: "))
  (IF (/= KEY NIL)
    (SETQ KEY (STRCASE KEY))
  )
  (IF (OR
        (= KEY "S")
        (= KEY NIL)
      )
    (SETQ DETA_Y (/ (- Y_MAX Y_MIN) (1- L_TXTSS)))
    (IF (= KEY "I")
      (PROGN
        (PRINC "请输入行间距:")
        (SETQ DETA_Y (GETDIST))
      )
    )
  )
  (SETQ CT 1)
  (WHILE (< CT L_TXTSS)
    (SETQ NUM (NTH CT INDEX)
          TXTENT (SSNAME TXTSS NUM)
          TXT (ENTGET TXTENT)
          GC72 (CDR (ASSOC 72 TXT))
          GC73 (CDR (ASSOC 73 TXT))
    )
    (SETQ Y_Y (- (NTH NUM MY_ALL) (+ Y_MIN (* CT DETA_Y)))

    )
    (IF (AND
          (= 0 GC72)
          (= 0 GC73)
        )
      (PROGN
        (SETQ U_O (TRANS (CDR (ASSOC 10 TXT)) 0 1)
              U_FX (CAR U_O)
              U_FY (- (CADR U_O) Y_Y)
              U_FZ (CADDR U_O)
              W_O (TRANS (LIST U_FX U_FY U_FZ) 1 0)
              NEWFP (LIST 10 (CAR W_O) (CADR W_O) (CADDR W_O))
              TXT (SUBST
                    NEWFP
                    (ASSOC 10 TXT)
                    TXT
                  )
        )
        (ENTMOD TXT)
        (ENTUPD TXTENT)
      )
      (PROGN
        (SETQ U_O (TRANS (CDR (ASSOC 11 TXT)) 0 1)
              U_FX (CAR U_O)
              U_FY (- (CADR U_O) Y_Y)
              U_FZ (CADDR U_O)
              W_O (TRANS (LIST U_FX U_FY U_FZ) 1 0)
              NEWFP (LIST 11 (CAR W_O) (CADR W_O) (CADDR W_O))
              TXT (SUBST
                    NEWFP
                    (ASSOC 11 TXT)
                    TXT
                  )
        )
        (ENTMOD TXT)
        (ENTUPD TXTENT)
      )
    )
    (SETQ CT (1+ CT))
  )
  (PRINC)
)
怎么运行不了啊,哪个大哥帮忙改改!
谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-11-29 13:10:34 | 显示全部楼层
怎么这么眼熟呢?!好像是我的!
程序在r14下没什么问题呀!


  1. (defun c:Td (/ TxtSS  L_TxtSS            ct           MY_ALL txt         FY        TH
  2.                MY     MY_ALL ct            index  Y_min  Y_max         key        ct
  3.                num    txtEnt txt    gc72   gc73          U_O         U_FX        U_FY
  4.                U_FZ   W_O    NewFP  txt
  5.               )
  6.   (princ "\n请选择需要排列的文字:")
  7.   (setq        TxtSS        (ssget '((0 . "TEXT")))
  8.         L_TxtSS        (sslength TxtSS)
  9.         ct        0
  10.         MY_ALL        nil
  11.   ) ;_ end of setq
  12.   (while (< ct L_TxtSS)
  13.     (setq txt         (entget (ssname TxtSS ct))
  14.           FY         (cadr (trans (cdr (assoc 10 txt)) 0 1))
  15.           TH         (cdr (assoc 40 txt))
  16.           MY         (+ FY (/ Th 2))
  17.           MY_ALL (append MY_ALL (list MY))
  18.           ct         (1+ ct)
  19.     )
  20.   ) ;_ end of while
  21.   (setq        index (vl-sort-i MY_ALL '<)
  22.         Y_min (nth (nth 0 index) MY_ALL)
  23.         Y_max (nth (nth (1- L_TxtSS) index) MY_ALL)
  24.   )
  25.   (initget 128 "S I")
  26.   (setq
  27.     key        (getkword "\n[输入行间距(I)/根据所选文字确定行间距(S)]<S>: "
  28.         ) ;_ end of getkword
  29.   ) ;_ end of setq
  30.   (if (/= key nil)
  31.     (setq key (strcase key))
  32.   ) ;_ end of if
  33.   (if (or (= key "S") (= key nil)) ;_ end of or
  34.     (setq deta_y (/ (- Y_max Y_min) (1- L_TxtSS)))
  35.     (if        (= key "I")
  36.       (progn (princ "请输入行间距:") (setq deta_y (getdist))) ;_ end of progn
  37.     ) ;_ end of if
  38.   ) ;_ end of if
  39.   (setq ct 1)
  40.   (while (< ct L_TxtSS)
  41.     (setq num         (nth ct index)
  42.           txtEnt (ssname TxtSS num)
  43.           txt         (entget txtEnt)
  44.           gc72         (cdr (assoc 72 txt))
  45.           gc73         (cdr (assoc 73 txt))
  46.     ) ;_ end of setq
  47.     (setq Y_Y (- (nth num MY_ALL) (+ y_min (* ct deta_y))) ;_ end of -
  48.     ) ;_ end of setq
  49.     (if        (and (= 0 gc72) (= 0 gc73))
  50.       (progn (setq U_O         (trans (cdr (assoc 10 txt)) 0 1)
  51.                    U_FX         (car U_O)
  52.                    U_FY         (- (cadr U_O) Y_Y)
  53.                    U_FZ         (caddr U_O)
  54.                    W_O         (trans (list U_FX U_FY U_FZ) 1 0)
  55.                    NewFP (list 10 (car W_O) (cadr W_O) (caddr W_O))
  56.                    txt         (subst NewFP (assoc 10 txt) txt)
  57.              )
  58.              (entmod txt)
  59.              (entupd txtent)
  60.       ) ;_ end of progn
  61.       (progn (setq U_O         (trans (cdr (assoc 11 txt)) 0 1)
  62.                    U_FX         (car U_O)
  63.                    U_FY         (- (cadr U_O) Y_Y)
  64.                    U_FZ         (caddr U_O)
  65.                    W_O         (trans (list U_FX U_FY U_FZ) 1 0)
  66.                    NewFP (list 11 (car W_O) (cadr W_O) (caddr W_O))
  67.                    txt         (subst NewFP (assoc 11 txt) txt)
  68.              )
  69.              (entmod txt)
  70.              (entupd txtent)
  71.       ) ;_ end of progn
  72.     ) ;_ end of if
  73.     (setq ct (1+ ct))
  74.   ) ;_ end of while
  75.   (princ)
  76. ) ;_ end of defun



论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-29 13:17:37 | 显示全部楼层
运行正常
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-29 16:30:59 | 显示全部楼层
大哥r14下运行错误啊,
请选择需要排列的文字:
Select objects: Other corner: 2 found

Select objects:
出错:null function
nil*Cancel*
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-29 17:02:24 | 显示全部楼层
r14, 好老啊。
大约是不支持vl-sort-i函数。程序前面加个(vl-load-com)试试。不行就只有改写程序了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-29 19:52:43 | 显示全部楼层
忘了说了,在r14要在vlisp环境下加载或编译成arx文件!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-29 21:42:46 | 显示全部楼层
大哥可不可以上传一个给我啊,我是用r14的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-30 12:13:27 | 显示全部楼层
调整文字间距的命令是:ct
里面还有一个命令:add
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-30 13:35:26 | 显示全部楼层
最初由 841594 发布
[B]r14, 好老啊。
大约是不支持vl-sort-i函数。程序前面加个(vl-load-com)试试。不行就只有改写程序了。 [/B]

r14中不能用(vl-load-com)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-28 22:03 , Processed in 0.422704 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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