找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: szx025

[求助] [求助]:在指定位置写出要求的文字

[复制链接]
发表于 2007-3-3 21:47:02 | 显示全部楼层
请问如何在上述程序的基础之上实现带箭头的直线:
即画出的直线要带方向性,还要可以连续画,每两个点之间的直线都要带一个箭头,每两个点之间沿直线上方标注文字?

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

使用道具 举报

发表于 2007-3-3 22:46:38 | 显示全部楼层
定义一个dim标注样式即可!
前缀 xxx-
箭头大小,两边都要或只要一边你自己定
标注线抑制不显示
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-3-4 13:26:34 | 显示全部楼层
下面这个尚未经过测试,请试一试先。
[PHP]
(defun C:test()
(if (setq str (getstring "\n请输入文字<35>:"))
    (progn
        (if    (= str "")
               (setq str (strcat "TB04-" "35"))
               (setq str (strcat "TB04-" str))
        )
        (while (if (setq pt1 getpoint "\n直线第一点:")
                   (if (setq pt2 getpoint "\n直线第二点:")
                   )
               )
               (setq pt3 (* 0.5 (+ pt1 pt2)))
               (command "_line" pt1 pt2 "")
               (command "text" pt3 2.5 (angtos(angle Pt1 Pt2)0 4) str)
        )
    )
)
(princ)
)
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-3-4 14:24:59 | 显示全部楼层
17楼的方法很好,可以将直线、箭头和文字三者结为一体。
18楼的代码修改后如下:(由于是在网吧写的,故未能测试。)
[PHP]
(defun C:test()
(if (setq str (getstring "\n请输入文字<35>:"))
    (progn
        (if    (= str "")
               (setq str (strcat "TB04-" "35"))
               (setq str (strcat "TB04-" str))
        )
        (while (if (setq pt1 (getpoint "\n直线第一点:"))
                   (if (setq pt2 (getpoint pt1 "\n直线第二点:"))
                   )
               )
               (setq pt3 (* 0.5 (+ pt1 pt2)))
               (command "_line" pt1 pt2 "")
               (command "text"
                        pt3
                        ""
                        (* 180.
                           (/ (angle Pt1 Pt2) pi)
                        )
                        str
               )
        )
    )
)
(princ)
)
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2007-3-5 07:35:24 | 显示全部楼层
(defun c:gt (/ pt1 pt2 pt3 pt4 str)
       (setq olderr *error*
           *error* at_err)
       (setvar "osmode" 0)
       (setq pt1 (getpoint "\n定位点:"))
       (setq pt2 (getpoint pt1 "\n定位点:"))
       (command "line" pt1 pt2 "")
       (setq pt3 (getpoint pt2 "\n定位点:"))
       (command "line" pt2 pt3 "")
       (setq pt4 (getpoint "\n插入点:"))
       (setq str (getstring "\n请输入梯高:"))
       (setq str (strcat "T4B09a-" str))
       (command "text" pt4 300 0 str)
       (setvar "osmode" 33)
       (setq *error* olderr)
       (princ)
       )
看看我自己根据论坛朋友意见写的程序
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2007-3-11 22:32:04 | 显示全部楼层
按楼上的要求,写的如下:
[php]
(defun mid_pt (a b)
(mapcar
'(lambda (a b) (/ (+ a b) 2))
a
b
)
)
(defun C:test()
(setq str (getstring "\n请输入文字<35>:"))
(if (= str "") (setq str (strcat "TB04-" "35")) (setq str (strcat "TB04-" str)))
(setq pt1 (getpoint "\n直线第一点:"))
(setq pt2 (getpoint pt1 "\n直线第二点:"))
(setq ang12 (angtos (angle pt1 pt2)))
(setq pt_mid (mid_pt pt1 pt2))
(setq txt_size (getvar "textsize"))
(command "line" pt1 pt2 "")
(command "text" "j" "bc" pt_mid txt_size ang12 str)
(princ)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-12 07:34:51 | 显示全部楼层
有两个问题
1,如果直线从右向左画,文字是反的
2,文字不应该紧贴直线,而应空出一定的距离
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-12 13:59:17 | 显示全部楼层
  1. [FONT=courier new](defun c:test ()
  2.   (CMDLA0)
  3.   (setq        int (UINT 7 "" "整数值" INT)
  4.         str (strcat "TB04-" (itoa int))
  5.   )
  6.   (while (setq e (entsel "\n选择曲线: "))
  7.     (setq s1        (car e)
  8.           etype        (xyp-get-dxf 0 s1)
  9.     )
  10.     (if        (member        etype
  11.                 '("LINE" "CIRCLE" "ELLIPSE" "POLYLINE" "ARC" "LWPOLYLINE")
  12.         )
  13.       (progn
  14.         (setq pt  (osnap (cadr e) "near")
  15.               pt1 (xyp-get-RightPoint
  16.                     (xyp-get-QiexianAtPoint s1 pt 100)
  17.                     (xyp-get-QiexianAtPoint s1 pt -100)
  18.                     100
  19.                   )
  20.               ang (rad2ang (xyp-Rad2Real (xyp-get-AngleAtPoint s1 pt) 1))
  21.         )
  22.         (xyp-Text 2 pt1 str)
  23.         (command "rotate" (entlast) "" pt1 ang)
  24.       )
  25.     )
  26.   )
  27.   (CMDLA1)
  28. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-3-12 15:54:10 | 显示全部楼层
文字角度的问题已解决;文字偏移的距离可以通过设置常量解决。
修改后,代码如下:
[PHP]
(defun C:test ()
    (if        (setq str (getstring "\n请输入文字<35>:"))
        (progn
            ;;从直线上偏移的距离
            (setq p 0.1)
            ;;箭头角度(弧度)
            (setq jt-jd 0.174532925199432957692369076848860)
            ;;箭头大小
            (setq jt-dx 0.5)
            (if        (= str "")
                (setq str (strcat "TB04-" "35"))
                (setq str (strcat "TB04-" str))
            )
            (while (if (setq pt1 (getpoint "\n直线第一点:"))
                       (if (setq pt2 (getpoint pt1 "\n直线第二点:"))
                           T
                       )
                   )
                (setq ang (angle Pt1 Pt2)
                      pt3 (polar pt2 (+ ang pi jt-jd) jt-dx)
                )
                (if (and (> ang (* 0.5 pi))
                         (< ang (* 1.5 pi))
                    )
                    (setq ang (- ang pi))
                )
                (setq pt4 (list        (* 0.5 (+ (car pt1) (car pt2)))
                                (* 0.5 (+ (cadr pt1) (cadr pt2)))
                          )
                      pt5 (polar pt4 (+ ang (* 0.5 pi)) p)
                )
                (setq ang (* (/ ang pi) 180.))
                (command "_pline" pt1 pt2 pt3 "")
                (command "text" "j" "c" pt5 "" ang str)
            )
        )
    )
    (princ)
)
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2007-3-12 19:44:34 | 显示全部楼层
[php](defun c:test ()
  (cmdla0)
  (if(null int)(setq int 35))
  (setq        int (UINT 7 "" "整数值" INT))
  (while (setq e (entsel"\n选择曲线实体: "))
    (xyp-TextAtCurvePoint (car e) (osnap (cadr e) "near")
      50 (strcat "TB04-" (itoa int)) 2 1)
  )
  (cmdla1)
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 09:43 , Processed in 0.203594 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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