土木在线论坛 \ 建筑设计 \ CAD下载及教程 \ 看看下面的程序到底有什么毛病

看看下面的程序到底有什么毛病

发布于:2007-08-11 09:27:11 来自:建筑设计/CAD下载及教程 [复制转发]
看看下面的程序到底有什么毛病,计算是正确的,就是运行的时候会发生错误
当文字的基准点位中间(只要不是左)就不能正常运行~

(DEFUN C:ttq ( / count ent gop next pt_base pt_new temp1 temp2 temp3 total yesno)
(setvar "OSMODE" 0)
(SETQ ENT (ENTSEL "\n 选择参照单行文本"))
(IF (= ENT NIL)
(PRINC "\n 没有选中物体")
(PROGN
(SETQ ENT (ENTGET (CAR ENT)))
(IF (/= (CDR (ASSOC 0 ENT)) "TEXT")
(PRINC "\n 选中的物体不是单行文本")
(PROGN
(INITGET 128 "X Y")
(SETQ YESNO (GETKWORD "\n 参照字的X轴(X) / 参照字的Y轴(Y):(X) "))
(IF (OR (= YESNO "X") (= YESNO NIL))
(SETQ PT_BASE (CADR (ASSOC 10 ENT)))
(SETQ PT_BASE (CAR (CDDR (ASSOC 10 ENT))))
)
(PRINC "\n 选择对齐的文本")
(SETQ GOP (ssget ":L")
COUNT 0
TOTAL 0
)
(REPEAT (SSLENGTH GOP)
(SETQ NEXT (ENTGET (SSNAME GOP COUNT)))
(IF (= (CDR (ASSOC 0 NEXT)) "TEXT")
(PROGN (SETQ TEMP1 (CAR (CDR (ASSOC 10 NEXT)))
TEMP2 (CADR (CDR (ASSOC 10 NEXT)))
TEMP3 (CAR (CDDR (CDR (ASSOC 10 NEXT))))
)
(IF (OR (= YESNO "X") (= YESNO NIL))
(SETQ PT_NEW (LIST PT_BASE TEMP2 TEMP3))
(SETQ PT_NEW (LIST TEMP1 PT_BASE TEMP3))
)
(SETQ
NEXT (SUBST (CONS 10 PT_NEW) (ASSOC 10 NEXT) NEXT)
)
(ENTMOD NEXT)
;(PRINC NEXT)
(SETQ TOTAL (1+ TOTAL))
)
)
(SETQ COUNT (1+ COUNT))
)
(PRINC "\n 共 ")
(PRINC TOTAL)
(PRINC "字体改变")
)
)
)
)
(PRINC)
)

全部回复(2 )

只看楼主 我来说两句抢地板
  • 小萝卜的头
    (princ "\n>>>请输入wq,TEXT文本对齐.<<<")
    (defun c:wq (/ DATA1 DATA2 DQ1 DQ2 ENT1 ENT2 HV I
    P P1 P1X P1Y P2 P2X P2Y SS VAL0
    )
    (if (and
    (setq ent1 (car (entsel "\n>>>对齐的目标文本<退出>:")))
    (setq data1 (entget ent1)
    val0 (cdr (assoc 0 data1))
    p1 (cdr (assoc 10 data1))
    p1x (car p1)
    p1y (cadr p1)
    )
    (= val0 "TEXT")
    )
    (progn
    (initget "h v")
    (setq hv (getkword "\n>>>水平对齐[h]或竖向对齐[v]<默认竖向v>:"))
    (if (= hv nil)
    (setq hv "v")
    )
    (princ "\n>>>选择欲对齐的文本:")
    (if (setq ss (ssget ’((0 . "TEXT")))
    i 0
    )
    (progn
    (repeat (sslength ss)
    (setq ent2 (ssname ss i)
    data2 (entget ent2)
    p2 (cdr (assoc ’10 data2))
    p2x (car p2)
    p2y (cadr p2)
    i (+ i 1)
    )
    (cond ((= hv "v") (setq p (list p1x p2y)))
    ((= hv "h") (setq p (list p2x p1y)))
    )
    (setq data2 (subst (cons 72 0) (assoc ’72 data2) data2)
    data2 (subst (cons 73 0) (assoc ’73 data2) data2)
    data2 (subst (cons 10 p) (assoc ’10 data2) data2)
    )
    (entmod data2)
    )
    )
    )
    )
    )
    (princ)
    )

    http://acad.net.cn/viewthread.php?tid=340&extra=page%3D1
    来这里好看些,代码比较好看
    2007-08-11 14:19:11

    回复 举报
    赞同0
  • 小萝卜的头
    (SETQ TEMP1 (CAR (CDR (ASSOC 10 NEXT)))
    TEMP2 (CADR (CDR (ASSOC 10 NEXT)))
    TEMP3 (CAR (CDDR (CDR (ASSOC 10 NEXT))))
    )
    ;;;这句可以改一下.用car cdr cadr cddr 太累人了.
    (setq val10 (cdr (ASSOC 10 NEXT))
    px (nth 0 val10)
    py (nth 1 val10)
    pz (nth 2 val10)
    )

    ;;;这个我以前自己写过一个,扔了....
    ;;;建议:
    ;;;既然(只要不是左)就不能正常运行.
    ;;;那你就把全改左..可以研究一下TEXT的dxf组码
    2007-08-11 13:49:11

    回复 举报
    赞同0
这个家伙什么也没有留下。。。

CAD下载及教程

返回版块

52.08 万条内容 · 682 人订阅

猜你喜欢

阅读下一篇

四层办公楼的第四层做成轻钢屋架 行不行

四层办公楼的第四层做成轻钢屋架,房屋建筑宽度是13.08M,在规范上有十二米的屋架 请问该怎么做,新手请教!!!

回帖成功

经验值 +10