找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 770|回复: 12

[LISP程序]:抛砖引玉:能生成各种定位方式文本的程序,供编程爱好者测试使用。

[复制链接]
发表于 2004-9-24 21:13:16 | 显示全部楼层 |阅读模式

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

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

×
自己测试自己的程序使用的,觉得有必要就贴上来了,欢迎指正。
[PHP]
(defun c:ttt (/ t72 t73 bt_pt bt_pt11 elist)
  (setq bt_pt (getpoint "\n指出插入点:"))
  (setq t72 0)
  (repeat 3
    (setq t73 0)
    (repeat 4
      (setq elist (list        (cons 0 "TEXT")
                        (CONS 8 "TEST")
                        (cons 1 "This is my test text")
                        (cons 7 "standard")
                        (cons 10 bt_pt)
                        (cons 11 bt_pt)
                        (cons 40 40)
                        (cons 50 0)
                        (cons 41 0.7)
                        (cons 71 0)
                        (cons 72 t72)
                        (cons 73 t73)
                        (cons 62 4)
                  )
      )
      (entmake elist)
      (setq bt_pt (polar bt_pt (* pi 1.5) 120))
      (setq t73 (1+ t73))
    )
    (setq t72 (1+ t72))
  )
  (repeat 3
    (setq bt_pt11 (polar bt_pt 0 600))
    (setq elist        (list (cons 0 "TEXT")
                      (CONS 8 "TEST")
                      (cons 1 "This is my test text")
                      (cons 7 "standard")
                      (cons 10 bt_pt)
                      (cons 11 bt_pt11)
                      (cons 40 40)
                      (cons 50 0)
                      (cons 41 1)
                      (cons 71 0)
                      (cons 72 t72)
                      (cons 73 0)
                      (cons 62 4)
                )
    )
    (entmake elist)
    (setq bt_pt (polar bt_pt (* pi 1.5) 120))
    (setq t72 (1+ t72))
  )
  (princ)
)
;;;----------------------------------------------------------------------------
(PRINC "\n  TTT  V1.0已加载。以TTT启动命令。")
(princ)

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

Re: [LISP程序]:抛砖引玉:能生成各种定位方式文本的程序,供编程爱好者测试使用。

最初由 urljit 发布
[B]自己测试自己的程序使用的,觉得有必要就贴上来了,欢迎指正。
[PHP]
(defun c:ttt (/ t72 t73 bt_pt bt_pt11 elist)
  (setq bt_pt (getpoint "\n指出插入点:"))
  (setq t72 0)
  (repeat 3
    (setq t73 ... [/B]

很好的例子,不过我现在更喜欢用Vla方法

  1. (defun c:ttt (/ pt txt )
  2.   (if (setq pt (getpoint "\nInsert Point: "))
  3.     (progn
  4.       (setq txt        (vla-addtext
  5.                   (vla-get-modelspace
  6.                     (vla-get-activedocument (vlax-get-acad-object))
  7.                   )
  8.                   "This is my test text"
  9.                   (vlax-3d-point pt)
  10.                   40.
  11.                 )
  12.       )
  13.       (mapcar
  14.         '(lambda (x / t1 insp)
  15.            (setq t1 (vla-copy txt))
  16.            (vla-move
  17.              t1
  18.              (vlax-3d-point pt)
  19.              (setq
  20.                insp (vlax-3d-point (setq pt (polar pt (* 0.5 pi) 50)))
  21.              )
  22.            )
  23.            (vla-put-alignment t1 (eval x))
  24.            (vla-put-textalignmentpoint t1 insp)
  25.          )
  26.         '(acAlignmentCenter
  27.            acAlignmentRight
  28.            acAlignmentAligned
  29.            acAlignmentMiddle
  30.            acAlignmentFit
  31.            acAlignmentTopLeft
  32.            acAlignmentTopCenter
  33.            acAlignmentTopRight
  34.            acAlignmentMiddleLeft
  35.            acAlignmentMiddleCenter
  36.            acAlignmentMiddleRight
  37.            acAlignmentBottomLeft
  38.            acAlignmentBottomCenter
  39.            acAlignmentBottomRight
  40.           )
  41.       )
  42.     )
  43.   )
  44.   (princ)
  45. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-9-25 12:35:13 | 显示全部楼层
果然引出“玉”来了,还是楼上的兄弟厉害,vlisp!能否指教一二?与我QQ联系好么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-9-25 13:16:32 | 显示全部楼层
最初由 urljit 发布
[B]果然引出“玉”来了,还是楼上的兄弟厉害,vlisp!能否指教一二?与我QQ联系好么? [/B]

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

使用道具 举报

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

使用道具 举报

发表于 2004-9-27 10:04:03 | 显示全部楼层
谢谢楼上的高手提供源代码,我也学习一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-9-27 14:08:53 | 显示全部楼层
shisj你过奖了,我也不是什么高手,互相学习,有机会可以联系联系。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2004-10-15 22:01:50 | 显示全部楼层
同在一个城市的Free-Lancer 兄弟:我正在学习vl,你的程序能否修改一下,让字符串尽量排列整齐些?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-15 23:33:39 | 显示全部楼层
最初由 urljit 发布
[B]同在一个城市的Free-Lancer 兄弟:我正在学习vl,你的程序能否修改一下,让字符串尽量排列整齐些? [/B]

你在写什么?字串对齐?这样

  1. (defun c:ttt (/ pt txt)
  2.   (if (setq pt (getpoint "\nInsert Point: "))
  3.     (progn
  4.       (setq txt        (vla-addtext
  5.                   (vla-get-modelspace
  6.                     (vla-get-activedocument (vlax-get-acad-object))
  7.                   )
  8.                   "This is my test text"
  9.                   (vlax-3d-point pt)
  10.                   40.
  11.                 )
  12.       )
  13.       (mapcar
  14.         '(lambda (x / t1 inspt)
  15.            (setq t1 (vla-copy txt))
  16.            (vla-move
  17.              t1
  18.              (vlax-3d-point pt)
  19.              (vlax-3d-point
  20.                (setq pt (polar pt (* 0.5 pi) 70))
  21.              )
  22.            )
  23.            (vla-put-alignment t1 (eval x))
  24.            (vla-put-textalignmentpoint t1 (vlax-3d-point pt))
  25.            (setq inspt (vla-get-insertionpoint t1))
  26.            (if (or (vl-string-search "Center" (vl-princ-to-string x))
  27.                    (equal (eval x) acAlignmentMiddle)
  28.                    (vl-string-search "Right" (vl-princ-to-string x))
  29.                )
  30.              (vla-move t1 inspt (vlax-3d-point pt))
  31.            )
  32.            (if (or (equal (eval x) acAlignmentMiddleLeft)
  33.                    (equal (eval x) acAlignmentTopLeft)
  34.                )
  35.              (vla-move t1 inspt (vlax-3d-point pt))
  36.            )
  37.          )
  38.         '(acAlignmentCenter
  39.            acAlignmentRight                ; acAlignmentAligned
  40.            acAlignmentMiddle                ; acAlignmentFit
  41.            acAlignmentTopLeft                 acAlignmentTopCenter
  42.            acAlignmentTopRight                 acAlignmentMiddleLeft
  43.            acAlignmentMiddleCenter         acAlignmentMiddleRight
  44.            acAlignmentBottomLeft         acAlignmentBottomCenter

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

使用道具 举报

 楼主| 发表于 2004-10-16 15:14:40 | 显示全部楼层
好弟兄,你的程序就是厉害,我已经试用过了,有时间联系。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-16 21:04:37 | 显示全部楼层
我觉得原来的就很好了.一眼就可以看出文字定位方式的特点.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-10-17 21:07:42 | 显示全部楼层
正好给了我一个学习、请教的机会,在最新的代码中,为什么不能合并两个if呢?看起来他们是一样的呀。

经过学习,终于搞定,代码如下:[PHP]
(defun c:tttv (/ pt txt al_pt)
  (vl-load-com)
  (setq        crtv (vla-get-modelspace
               (vla-get-activedocument (vlax-get-acad-object))
             )
  )
  (if (setq pt (getpoint "\nInsert Point: "))
    (progn
      (setq txt        (vla-addtext
                  crtv
                  "This is my test text"
                  (vlax-3d-point pt)
                  40.
                )
      )
      (mapcar
        '(lambda (x / t1 inspt)
           (setq t1 (vla-copy txt))
           (vla-move
             t1
             (vlax-3d-point pt)
             (vlax-3d-point
               (setq pt (polar pt (* 1.5 pi) 70))
             )
           )
           (vla-put-alignment t1 (eval x))
           (vla-put-textalignmentpoint t1 (vlax-3d-point pt))
           (setq inspt (vla-get-insertionpoint t1))
           (if (or (vl-string-search "Center" (vl-princ-to-string x))
                   (vl-string-search "Right" (vl-princ-to-string x))
                   (equal (eval x) acAlignmentMiddle)
                   (equal (eval x) acAlignmentMiddleLeft)
                   (equal (eval x) acAlignmentTopLeft)
               )
             (progn
               (vla-move t1 inspt (vlax-3d-point pt))
             )
           )
           ;;移动为整齐形式
           (if (or (equal (eval x) acAlignmentAligned)
                   (equal (eval x) acAlignmentFit)
               )
             (progn
               (vla-rotate t1 (vlax-3d-point pt) (* 0.5 pi))
               (setq inspt (vla-get-insertionpoint t1))

               (vla-move t1 inspt (vlax-3d-point pt))
               (vla-put-TextAlignmentPoint t1 al_pt)
             )
           )
           ;;处理fit aligned形式
           (if (equal (eval x) acAlignmentRight)
             (progn
               (setq al_pt (vla-get-TextAlignmentPoint t1))
             )
           )
           ;;获得right形式的alignmentpoint
           (IF AL_PT
             (setq
               al_pt (vlax-3d-point
                       (polar (vlax-safearray->list
                                (vlax-variant-value al_pt)
                              )
                              (* 1.5 pi)
                              70
                       )
                     )
             )
           )
         )
        '(acAlignmentCenter               acAlignmentRight
          acAlignmentAligned               acAlignmentMiddle
          acAlignmentFit               acAlignmentTopLeft
          acAlignmentTopCenter               acAlignmentTopRight
          acAlignmentMiddleLeft               acAlignmentMiddleCenter
          acAlignmentMiddleRight       acAlignmentBottomLeft
          acAlignmentBottomCenter      acAlignmentBottomRight
         )
      )
    )
  )
  (setq al_pt nil)
  (princ)
)
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 15:19 , Processed in 0.195549 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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