找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2096|回复: 5

[求助] 判断上下文字在线上下

[复制链接]

已领礼包: 46个

财富等级: 招财进宝

发表于 2014-4-28 09:43:59 | 显示全部楼层 |阅读模式

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

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

×
网上参考了 院长还有其他人写的 组合了个选择离线中点最近的文字的lsp,但是现在想加个判断是文字是在线上,然后再类推一个文字在线下的,求完善,指点!
(defun c:xzjx12 ()
(if (and (setq s1  (entsel "\n直线: "))
           (setq ss1 (ssget '((0 . "text"))))
    )
  (progn
    (COMMAND "UCS" "")
  (setq cmdecho_bak (getvar "cmdecho"))
  (setq AcadObject   (vlax-get-acad-object)
AcadDocument (vla-get-ActiveDocument Acadobject)
mSpace      (vla-get-ModelSpace Acaddocument)
  )
  ;;选取需要测量的样条曲线、圆弧、直线、椭圆

   (setq ss (car s1))
   (setq endata (entget ss))
  ;;寻找线段中点   

    ;;寻找代表图层的字符串
    (setq aa (assoc 0 endata))
    ;;获取图层名称
    (setq aa1 (cdr aa))
    ;;判断线条种类
    (cond
      ((= aa1 "SPLINE")
       ;;如果是spline
       (progn
  (setq arcObj (VLAX-ENAME->VLA-OBJECT ss))
  (setq startPnt1 (vla-get-ControlPoints arcObj))
  (setq p1
  (vlax-safearray->list (vlax-variant-value startPnt1))
  )
  (setq x1 (car p1))
  (setq y1 (cadr p1))
  (setq z1 (caddr p1))
  (setq pp1 (list x1 y1 z1))
  (repeat (- (/ (length p1) 3) 1)
    ;;循环,寻找最后一个控制点
    (setq p1 (cdddr p1))
    (setq x2 (car p1))
    (setq y2 (cadr p1))
    (setq z2 (caddr p1))
  )
  (setq pp2 (list x2 y2 z2))
       )
      )
      ((= aa1 "LWPOLYLINE")
       ;;如果是LWPOLYLINE
       (progn
  (setq arcObj (VLAX-ENAME->VLA-OBJECT ss))
  (setq startPnt1 (vla-get-Coordinates arcObj))
  (setq p1 (vlax-safearray->list (vlax-variant-value startPnt1)))
  (setq x1 (car p1))
  (setq y1 (cadr p1))
  (setq z1 (caddr p1))
  (setq pp1 (list x1 y1 z1))
  (repeat (- (/ (length p1) 3) 1)
    ;;循环,寻找最后一个控制点
    (setq p1 (cdddr p1))
    (setq x2 (car p1))
    (setq y2 (cadr p1))
    (setq z2 (caddr p1))
  )
  (setq pp2 (list x2 y2 z2))
       )
      )
      (t
       (princ)
       ;;如果是其他种类线条
       (progn
  (setq arcObj (VLAX-ENAME->VLA-OBJECT ss))
  (setq startPnt1 (vla-get-StartPoint arcObj))
  ;;获取起点
  (setq endPnt1 (vla-get-EndPoint arcObj))
  ;;获取终点
  (setq pp1
  (vlax-safearray->list (vlax-variant-value startPnt1))
  )
  (setq
    pp2 (vlax-safearray->list (vlax-variant-value endPnt1))
  )
       )
      )
    )
    (setq x1 (car pp1))
    (setq y1 (cadr pp1))
    (setq z1 (caddr pp1))
    (setq x2 (car pp2))
    (setq y2 (cadr pp2))
    (setq z2 (caddr pp2))
    (setq x (/ (+ x1 x2) 2))
    (setq y (/ (+ y1 y2) 2))
    (setq z (/ (+ z1 z2) 2))
    (setq pt (list x y z))
    ;;取得线段两端的中点
    (setq ang (angle pp1 pp2))
    ;;获取角度
    (if (> (* (/ ang pi) 180) 180)
      (setq ang (+ ang pi))
    )
  (princ)
  (setvar "cmdecho" cmdecho_bak)
  (princ)



    (setq lst '()
          i   -1
    )
    (repeat (sslength ss1)
      (setq ss(ssname ss1 (setq i (1+ i)))
            l1 (distance (vlax-curve-getClosestPointTo ss pt) pt)
            lst (cons (list ss l1) lst)
      )
    )
    (setq sxx (caar (vl-sort lst '(lambda (x y) (< (cadr x) (cadr y))))))
  )
)
(command "ERASE" sxx "" ))

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

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-4-28 09:47:37 来自手机 | 显示全部楼层
API应用上有类似应用,调对齐方式

点评

因为前面加了很多判断了,有点乱了,不知道怎么继续接下去,好像容易出错,又不指点错哪里,所以才发上来,希望大大们帮忙完善下!  详情 回复 发表于 2014-4-28 09:49
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 46个

财富等级: 招财进宝

 楼主| 发表于 2014-4-28 09:49:33 | 显示全部楼层
st788796 发表于 2014-4-28 09:47
API应用上有类似应用,调对齐方式

因为前面加了很多判断了,有点乱了,不知道怎么继续接下去,好像容易出错,又不指点错哪里,所以才发上来,希望大大们帮忙完善下!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-4-28 10:29:55 来自手机 | 显示全部楼层
本帖最后由 st788796 于 2014-4-28 11:06 编辑
fjutcivil 发表于 2014-4-28 09:49
因为前面加了很多判断了,有点乱了,不知道怎么继续接下去,好像容易出错,又不指点错哪里,所以才发上来 ...


http://bbs.xdcad.net/forum.php?mod=viewthread&tid=671717

点评

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

使用道具 举报

已领礼包: 46个

财富等级: 招财进宝

 楼主| 发表于 2014-4-28 10:50:10 | 显示全部楼层
st788796 发表于 2014-4-28 10:29
http://bbs.xdcad.net/forum.php?mod=viewthread&tid=671717&extra=page%3D3&mobile=2

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-4-28 11:08:06 来自手机 | 显示全部楼层
fjutcivil 发表于 2014-4-28 10:50
长老 你给的网址是主页的

那是手机版网页地址,电脑上自动转到主页了

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 22:26 , Processed in 0.227032 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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