找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: hphkjz

[求助] 程序求助

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-11-4 08:32:32 | 显示全部楼层
hphkjz 发表于 2013-11-4 02:03
我看了看不是标注样式的,好像就是直接在直线上写的单行文字

  1. (command "text" "j" "bc" pt "" (* (/ ang pi) 180) (strcat ""
  2.                                                               (rtos dd 2)
  3.                                                       ) ""
  4.     )


上面这部分代码是写文字的,变量PT是位置的点,你往上面找,看看给PT赋值的地方,自己尝试修改修改。

点评

没找到啊,是这样的,结构图标注文字和线齐平,建筑图就跑偏了。所以很郁闷。  详情 回复 发表于 2013-11-9 08:41
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-9 08:41:52 来自手机 | 显示全部楼层
newer 发表于 2013-11-4 08:32
上面这部分代码是写文字的,变量PT是位置的点,你往上面找,看看给PT赋值的地方,自己尝试修改修改。

没找到啊,是这样的,结构图标注文字和线齐平,建筑图就跑偏了。所以很郁闷。

点评

有时候和字体有关,字体的基点不同,你修改下字体样式中的字体  详情 回复 发表于 2013-11-9 09:47
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-9 09:47:54 | 显示全部楼层
hphkjz 发表于 2013-11-9 08:41
没找到啊,是这样的,结构图标注文字和线齐平,建筑图就跑偏了。所以很郁闷。

有时候和字体有关,字体的基点不同,你修改下字体样式中的字体

点评

果然,确实跟字体有关。谢谢兄弟啊!哈哈,真好。 兄弟,还是这个代码,能不能修改一下,能让真正的长度都减去60。我画的是钢筋,这样好减去保护层。  详情 回复 发表于 2013-11-9 12:18
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-9 12:18:32 来自手机 | 显示全部楼层
st788796 发表于 2013-11-9 09:47
有时候和字体有关,字体的基点不同,你修改下字体样式中的字体

果然,确实跟字体有关。谢谢兄弟啊!哈哈,真好。
兄弟,还是这个代码,能不能修改一下,能让真正的长度都减去60。我画的是钢筋,这样好减去保护层。

点评

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-9 13:58:33 | 显示全部楼层
hphkjz 发表于 2013-11-9 12:18
果然,确实跟字体有关。谢谢兄弟啊!哈哈,真好。
兄弟,还是这个代码,能不能修改一下,能让真正的长度 ...

(rtos dd 2)
->
(rtos (- dd 60) 2)

点评

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

使用道具 举报

 楼主| 发表于 2013-11-9 14:26:26 来自手机 | 显示全部楼层
st788796 发表于 2013-11-9 13:58
(rtos dd 2)
->
(rtos (- dd 60) 2)

原来如此,多谢

点评

仁兄能帮忙给看个代码好吗。这是个图形切割的代码,里面有bug,不知道怎么改。运行时显示 no function definition: XDRX_ENTSEL 源代码是: (defun c:XDTB_ClipDwg (/ box el e2 entl n pt pts ss ss1) (if (and  详情 回复 发表于 2013-11-14 06:11
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-14 06:11:03 来自手机 | 显示全部楼层
hphkjz 发表于 2013-11-9 14:26
原来如此,多谢

仁兄能帮忙给看个代码好吗。这是个图形切割的代码,里面有bug,不知道怎么改。运行时显示 no function definition: XDRX_ENTSEL
源代码是:
  1. (defun c:XDTB_ClipDwg (/ box el e2 entl n pt pts ss ss1)
  2.   (if (and
  3.         (setq e1 (car (xdrx_entsel "\n拾取封闭的多段线<退出>:" (list (cons 0 "*POLYLINE") '(-4 . "&=") '(70 . 1)))))
  4.         (progn
  5.           (redraw e1 3)
  6.           t
  7.         )
  8.         (or
  9.           (setq pt (getpoint "\n点取裁剪区域<拾取线外多段线>:"))
  10.           (setq e2 (car (xdrx_entsel "\n拾取线外封闭多段线确定裁剪区域<退出>:" (list (cons 0 "*POLYLINE") '(-4 . "&=") '
  11.                                                                                      (70 . 1)
  12.                                                                                )
  13.                         )
  14.                    )
  15.           )
  16.         )
  17.       )
  18.     (progn
  19.       (XD::Begin)
  20.       (xdrx_document_ucson)
  21.       (xdrx_sysvar_push '("cmdecho" 0))
  22.       (setq pts (xdrx_getsamplept e1)
  23.             ss2 (ssget "cp" pts)
  24.       )
  25.       (if pt
  26.         (progn
  27.           (if (XD::Pnt:isInSide pt pts)
  28.             (progn
  29.               (ssdel e1 ss2)
  30.               (if (setq ss3 (ssget "wp" pts))
  31.                 (command ".erase" ss3 "")
  32.               )
  33.               (xdrx_pickset_clipbypoly ss2 e1)
  34.               (xdrx_object_regen e1)
  35.             )
  36.             (progn
  37.               (setq ss1 (ssget "x")
  38.                     ss (xdrx_pickset_subtract ss1 ss2)
  39.               )
  40.               (command ".erase" ss "")
  41.               (setq box (xd::entity:box ss2))
  42.               (apply
  43.                 'xdrx_polyline_make
  44.                 (cons t (XD::Pnts:UCS2WCS box))
  45.               )
  46.               (setq e2 (entlast))
  47.             )
  48.           )
  49.         )
  50.       )
  51.       (if e2
  52.         (progn
  53.           (setq el (XD::Geom:PathIsland e1 e2)
  54.                 entl (XD::SS:Ents ss2)
  55.           )
  56.           (foreach n el
  57.             (ssdel e2 ss2)
  58.             (setq ss2 (xdrx_pickset_clipbypoly ss2 n))
  59.             (setq entl (append
  60.                          (XD::SS:Ents ss2)
  61.                          entl
  62.                        )
  63.             )
  64.             (setq ss2 (XD::Entity->PickSet entl))
  65.             (entdel n)
  66.           )
  67.           (entdel e1)
  68.         )
  69.       )
  70.       (if (and
  71.             pt
  72.             e2
  73.           )
  74.         (entdel e2)
  75.       )
  76.     )
  77.   )
  78.   (xdrx_sysvar_pop)
  79.   (XD::End)
  80.   (princ)
  81. )


点评

加载相应版本的 xdrxapi 和开源通用lisp函数库,置顶帖子有链接  详情 回复 发表于 2013-11-14 06:15
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-14 06:15:33 来自手机 | 显示全部楼层
hphkjz 发表于 2013-11-14 06:11
仁兄能帮忙给看个代码好吗。这是个图形切割的代码,里面有bug,不知道怎么改。运行时显示 no function de ...

加载相应版本的 xdrxapi 和开源通用lisp函数库,置顶帖子有链接

点评

哥好哇,还是那个连续标注的程序能不能再稍微修改一下哇?就是在标注的前面单独显示几个字“长度是”,字高是固定的,还要区别于标注。并且所有的字体都是黑体的。还望哥在代码后面给标注出来哇! 代码去下 (princ  详情 回复 发表于 2013-11-18 01:00
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-18 01:00:14 来自手机 | 显示全部楼层
st788796 发表于 2013-11-14 06:15
加载相应版本的 xdrxapi 和开源通用lisp函数库,置顶帖子有链接

哥好哇,还是那个连续标注的程序能不能再稍微修改一下哇?就是在标注的前面单独显示几个字“长度是”,字高是固定的,还要区别于标注。并且所有的字体都是黑体的。还望哥在代码后面给标注出来哇!
代码去下
  1. (princ "\n程序:连续标注 命令:bz ")
  2. (defun c:bz ()
  3.   (COMMAND "UCS" "")
  4.   (setvar "cmdecho" 1)
  5.   (SETVAR "OSMODE" 0)
  6.   (setq AcadObject (vlax-get-acad-object)
  7.         AcadDocument (vla-get-ActiveDocument Acadobject)
  8.         mSpace (vla-get-ModelSpace Acaddocument)
  9.   )                                       ; 选取需要测量的样条曲线、圆弧、直线、椭圆
  10.   (setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE"))))
  11.   (setq i 0)                               ; 获取系统参数textsize
  12.   (setq shh (getvar "textsize"))
  13.   (setq str_hh (strcat "\n文字高度 <" (rtos shh 2) ">: "))
  14.   (setq hh (getdist str_hh))
  15.   (while hh
  16.     (setvar "textsize" hh)
  17.     (setq hh nil)
  18.   )                                       ; 输入标注文字高度
  19.                                        ; 循环开始
  20.   (repeat (sslength en)
  21.     (setq ss (ssname en i))
  22.     (setq endata (entget ss))
  23.     (command "lengthen" ss "")
  24.     (setq dd (getvar "perimeter"))
  25.     (princ (strcat "\n长度=" (rtos dd 2))) ; 寻找代表图层的字符串
  26.     (setq aa (assoc 0 endata))               ; 获取图层名称
  27.     (setq aa1 (cdr aa))                       ; 判断线条种类
  28.     (cond
  29.       ((= aa1 "SPLINE")                       ; 如果是spline
  30.         (progn
  31.           (setq arcObj (VLAX-ENAME->VLA-OBJECT ss))
  32.           (setq startPnt1 (vla-get-ControlPoints arcObj))
  33.           (setq p1 (vlax-safearray->list (vlax-variant-value startPnt1)))
  34.           (setq x1 (car p1))
  35.           (setq y1 (cadr p1))
  36.           (setq z1 (caddr p1))
  37.           (setq pp1 (list x1 y1 z1))
  38.           (repeat (- (/ (length p1) 3) 1) ; 循环,寻找最后一个控制点
  39.             (setq p1 (cdddr p1))
  40.             (setq x2 (car p1))
  41.             (setq y2 (cadr p1))
  42.             (setq z2 (caddr p1))
  43.           )
  44.           (setq pp2 (list x2 y2 z2))
  45.         )
  46.       )
  47.       ((= aa1 "LWPOLYLINE")               ; 如果是LWPOLYLINE
  48.         (progn
  49.           (setq arcObj (VLAX-ENAME->VLA-OBJECT ss))
  50.           (setq startPnt1 (vla-get-Coordinates arcObj))
  51.           (setq p1 (vlax-safearray->list (vlax-variant-value startPnt1)))
  52.           (setq x1 (car p1))
  53.           (setq y1 (cadr p1))
  54.           (setq z1 (caddr p1))
  55.           (setq pp1 (list x1 y1 z1))
  56.           (repeat (- (/ (length p1) 3) 1) ; 循环,寻找最后一个控制点
  57.             (setq p1 (cdddr p1))
  58.             (setq x2 (car p1))
  59.             (setq y2 (cadr p1))
  60.             (setq z2 (caddr p1))
  61.           )
  62.           (setq pp2 (list x2 y2 z2))
  63.         )
  64.       )
  65.       (t                               ; 如果是其他种类线条
  66.         (progn
  67.           (setq arcObj (VLAX-ENAME->VLA-OBJECT ss))
  68.           (setq startPnt1 (vla-get-StartPoint arcObj)) ; 获取起点
  69.           (setq endPnt1 (vla-get-EndPoint arcObj)) ; 获取终点
  70.           (setq pp1 (vlax-safearray->list (vlax-variant-value startPnt1)))
  71.           (setq pp2 (vlax-safearray->list (vlax-variant-value endPnt1)))
  72.         )
  73.       )
  74.     )
  75.     (setq x1 (car pp1))
  76.     (setq y1 (cadr pp1))
  77.     (setq z1 (caddr pp1))
  78.     (setq x2 (car pp2))
  79.     (setq y2 (cadr pp2))
  80.     (setq z2 (caddr pp2))
  81.     (setq x (/ (+ x1 x2) 2))
  82.     (setq y (/ (+ y1 y2) 2))
  83.     (setq z (/ (+ z1 z2) 2))
  84.     (setq pt (list x y z))               ; 取得线段两端的中点
  85.     (setq ang (angle pp1 pp2))               ; 获取角度
  86.     (if (> (* (/ ang pi) 180) 180)
  87.       (setq ang (+ ang pi))
  88.     )
  89.     (command "text" "j" "bc" pt "" (* (/ ang pi) 180) (strcat "" (rtos dd 2 0)) "")
  90.     (setq i (1+ i))
  91.   )
  92.   (prin1)
  93. )


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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-18 05:50:02 来自手机 | 显示全部楼层
(strcat "" (rtos dd 2 0))
->
(strcat "长度是" (rtos dd 2 0))

字体,字高在用程序之前自己定义好并设为当前

程序写的太没效率了

点评

加上那几个字运行时出现了bug,提示错误:no function definition:VLAX-GET-ACAD-OBJECT  详情 回复 发表于 2013-11-18 07:09
嗯,好的,敢问哥是从事什么职业的呀?  详情 回复 发表于 2013-11-18 06:35
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-18 06:35:03 来自手机 | 显示全部楼层
st788796 发表于 2013-11-18 05:50
(strcat "" (rtos dd 2 0))
->
(strcat "长度是" (rtos dd 2 0))

嗯,好的,敢问哥是从事什么职业的呀?

点评

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-18 06:46:08 | 显示全部楼层
hphkjz 发表于 2013-11-18 06:35
嗯,好的,敢问哥是从事什么职业的呀?

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-18 07:05:57 | 显示全部楼层
hphkjz 发表于 2013-11-18 06:35
嗯,好的,敢问哥是从事什么职业的呀?

就是标一个总长度吗
  1. (defun c:tt (/ ss zh)
  2.   (if
  3.     (and (setq ss (ssget '((0 . "*line,arc,ellipse"))))
  4.          (progn
  5.            (if (= (setq
  6.                     zh (getstring (strcat "\n字高<"
  7.                                           (rtos (getvar "textsize") 2 2)
  8.                                           ">: "
  9.                                   )
  10.                        )
  11.                   )
  12.                   ""
  13.                )
  14.              (setq zh (getvar "textsize"))
  15.              (setvar "textsize" (distof zh))
  16.            )
  17.            (setq zh (getvar "textsize"))
  18.          )
  19.     )
  20.      (mapcar '(lambda (x / d pmid an txt)
  21.                 (setq d           (xdrx_curve_getdistatpoint x (xdrx_curve_getendpoint x))
  22.                       pmid (cadr (xdrx_curve_getpoint x))
  23.                       an   (XD::Geom:AngleFormat
  24.                              (angle '(0. 0. 0.)
  25.                                     (xdrx_curve_getfirstderiv
  26.                                       x
  27.                                       (xdrx_curve_getparamatpoint x pmid)
  28.                                     )
  29.                              )
  30.                            )
  31.                       txt  (xdrx_text_make
  32.                              pmid
  33.                              (strcat "长度是" (rtos d))
  34.                              zh
  35.                              an
  36.                            )
  37.                 )
  38.                 (xdrx_text_setvermode txt 2)
  39.                 (xdrx_text_sethozmode txt 1)
  40.               )
  41.              (xdrx_pickset->ents ss)
  42.      )
  43.   )
  44.   (princ)
  45. )

点评

里面的运算不要变,就是在显示出来的长度前面再加一个自定义的单行文字  详情 回复 发表于 2013-11-18 07:11
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-18 07:09:02 来自手机 | 显示全部楼层
st788796 发表于 2013-11-18 05:50
(strcat "" (rtos dd 2 0))
->
(strcat "长度是" (rtos dd 2 0))

加上那几个字运行时出现了bug,提示错误:no function definition:VLAX-GET-ACAD-OBJECT

点评

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-18 07:11:00 | 显示全部楼层
hphkjz 发表于 2013-11-18 07:09
加上那几个字运行时出现了bug,提示错误:no function definition:VLAX-GET-ACAD-OBJECT

(vl-load-com)

点评

哥,我试了试,能运行,挺好的,但是我想“长度是”和后面的数字是分开的两个单行文字,能麻烦哥给再修改一下好吗?  详情 回复 发表于 2013-11-18 07:45
小弟愚笨,不太明白这些个涵义,刚刚你发步的那个程序也运行不起来,如果不好弄我只能自己单另加单行文字了,那样麻烦的很了  详情 回复 发表于 2013-11-18 07:27
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 02:32 , Processed in 0.441220 second(s), 68 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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