明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2455|回复: 13

[函数] lisp函数求助【请各位斑竹帮帮忙】

  [复制链接]
发表于 2011-5-8 17:40 | 显示全部楼层 |阅读模式
本帖最后由 xyz2009xyz 于 2011-5-8 17:43 编辑

(defun C:VD ( / S1 S2 I txt vh p0 x0 y0 y ptxt )
     (vl-load-com)
    (if (setq S1 (ssget '((0 . "TEXT"))))
     (progn
         (setq S2 (XYZ-SORT-SE S1 1 nil nil nil));;;;对S1进行内容排序函数,返回排序后的表
         (setq vh (getdist "\n行距:"))
         (setq p0 (getpoint "\n首行的插入点:"))
         (setq x0 (car p0))
         (setq y0 (cadr p0))
         (setq I 0)
         (repeat (sslength S2)      
              (setq  txt (cdr (assoc 1 (entget (ssname S2 I)))))   ;;获取排序后表内容,应该没问题,用PRINC可以单独显示正确内容
              (setq y (- y0 (* I vh)))
              (setq ptxt (list x0 y))
             (command  "TEXT" "J" "BL" ptxt 3.5 0  txt "") ;;但是此处为什么用command内容却不能显示,提示未知命令,是否txt内省不匹配?   
             (setq I (1+ I))
        )
     )
   )
  (princ)
)
 楼主| 发表于 2011-5-8 17:42 | 显示全部楼层
Gu_xl 斑竹好像在啊,能帮帮忙不?
 楼主| 发表于 2011-5-8 17:45 | 显示全部楼层
本帖最后由 xyz2009xyz 于 2011-5-8 21:38 编辑

另外用entmod 函数来显示是不是好一点,用COMMAND好像很慢,开始用COMMAND显示正确,重新开cad,这个程序就不能用COMMAND运行了,这是附件,麻烦帮一下忙!

本帖子中包含更多资源

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

x
 楼主| 发表于 2011-5-8 17:54 | 显示全部楼层
本帖最后由 xyz2009xyz 于 2011-5-8 17:54 编辑

本来是想用entmod函数来实现,代码如下,也不正确,就来求助各位大虾了

   (setq b (nth I S2))
    (setq y (- y0 (* I val)))
    (setq z (nth 3 (assoc '10 b)))
    (setq xyz_new (list '10 x0 y z))
    (setq b (subst (cons '72 0) (assoc '72 b) b))
    (setq b (subst (cons '73 0) (assoc '73 b) b))
    (setq b (subst xyz_new (assoc '10 b) b ) )
    (entmod b)

用COMMAND显示正常的时候是一个一个一次显示感觉有点慢!
发表于 2011-5-8 17:55 | 显示全部楼层
回复 xyz2009xyz 的帖子

(command  "TEXT" "J" "BL" ptxt 3.5 0  txt "")
==》
(command  "TEXT" "J" "BL" ptxt 3.5 0  txt)

评分

参与人数 1金钱 +20 收起 理由
xyz2009xyz + 20 学习阶段,感谢超版无私帮助

查看全部评分

 楼主| 发表于 2011-5-8 18:02 | 显示全部楼层
版主我删掉了,还是不行,我一开始就测试过了,附件已经上来了,麻烦看看!
发表于 2011-5-8 18:54 | 显示全部楼层
回复 xyz2009xyz 的帖子

      (setq S2 (SORT-SE S1 1 nil nil nil))   ;;表排序函数
==》
(setq S2 (SORT-SE S1 10 0 nil nil))   ;;表排序函数

评分

参与人数 1金钱 +5 收起 理由
xyz2009xyz + 5 学习阶段,感谢超版无私帮助

查看全部评分

发表于 2011-5-8 19:12 | 显示全部楼层
本帖最后由 ZZXXQQ 于 2011-5-8 19:15 编辑

游客,本帖隐藏的内容需要发帖数高于 5 才可浏览,你当前发帖数只有 0

评分

参与人数 1金钱 +20 收起 理由
xyz2009xyz + 20 学习阶段,感谢超版无私帮助

查看全部评分

 楼主| 发表于 2011-5-8 21:02 | 显示全部楼层
(defun C:VD ( / S1 S2 I vh p0 x0 y0 y z xyz_new b)
    (setvar "CMDECHO" 0)
    (command "-style" "xyz1" "ASCII,HZTXT" "0" "0.75" "0" "n" "n" "n") ;
    (if (setq S1 (ssget '((0 . "TEXT"))))
     (progn
       (setq S2 (SORT-SE S1 1 nil nil nil))   ;;表排序函数
       (setq vh (getdist "\n行距:"))
       (setq p0 (getpoint "\n首行的插入点:"))
       (setq x0 (car p0))
       (setq y0 (cadr p0))
       (setq I 0)                         
       (repeat (sslength S2)       
               (setq b (nth I S2))
               (setq y (- y0 (* I val)))
               (setq z (nth 3 (assoc '10 b)))
               (setq xyz_new (list '10 x0 y z))
               (setq b (subst (cons '72 0) (assoc '72 b) b)) ;;水平文字对齐组码,左对齐
               (setq b (subst (cons '73 0) (assoc '73 b) b)) ;;垂直文字对齐组码,基准线
               (setq b (subst xyz_new (assoc '10 b) b))      ;;文字插入位置
               (entmod b)                         
               (setq I (1+ I))
        )
     )
   )
   (setvar "CMDECHO" 1)
  (princ)
)
各位版主,麻烦再看看,我改成用ENTMOD来生成为什么提示参数错误:

命令: vd
选择对象: 指定对角点: 找到 20 个

选择对象:
行距:5
首行的插入点:; 错误: 参数类型错误: consp <Selection set: b7>
 楼主| 发表于 2011-5-8 21:04 | 显示全部楼层
本帖最后由 xyz2009xyz 于 2011-5-8 21:06 编辑

回复 Gu_xl 的帖子

呵呵,我不是按坐标来排序,我是想按文字内容来排序!,呵呵,Gu_xl 版主,能再帮我看看,用ENTMOD函数来生成为什么出现参数错误吗?谢谢,代码在上一楼!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-18 22:19 , Processed in 0.272261 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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