找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 636|回复: 4

(完成)[编程申请]:多義線上求一線段起終點

[复制链接]
发表于 2004-3-19 09:49:49 | 显示全部楼层 |阅读模式

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

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

×
請問在工具箱中是否有將4折或多折的多義線
取其中某一線段的起點與終點座標,即
用entsel取得pline及點對(可能是第2段折線)
然後用函數求得第2段折線的起點與終點
是否有這樣的函數
謝謝
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-3-19 10:57:02 | 显示全部楼层
工具箱中是否有不知道, 请参考这个程序:
[php]
(defun c:test ( / en j oldos ss)
  (cond ((setq ent (entsel "Pick a polyline: "))
         (getSegment (vlax-ename->vla-object (car ent))
                     (cadr ent)
         )
        )
  )
)
(defun getsegment (obj pt / cpt eParam stParam)
  (cond ((setq cpt (vlax-curve-getClosestPointTo obj pt T))
         (setq eParam (fix (vlax-curve-getEndParam obj)))
         (setq bul (vla-getBulge obj (fix (vlax-curve-getParamAtPoint obj cpt))))
         (if (= eParam (setq stParam (fix (vlax-curve-getParamAtPoint obj cpt))))
           (setq stParam (1- stParam))
           (setq eParam (1+ stParam))
         )
         (list eParam (vlax-curve-getPointAtParam obj stParam)
               (vlax-curve-getPointAtParam obj eParam) bul)
        )
  )
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-3-19 11:13:19 | 显示全部楼层
謝謝黃金長老
解決了困擾我很久的問題

2004/3/23
在這段的程式中,有一個函數
vla-getBulge
不知幹麼用的
在我的書上找不到
請黃金長老解惑一下
謝謝
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2004-3-19 12:05:22 | 显示全部楼层

Re: [编程申请]:多義線上求一線段起終點

最初由 colatree 发布
[B]請問在工具箱中是否有將4折或多折的多義線
取其中某一線段的起點與終點座標,即
用entsel取得pline及點對(可能是第2段折線)
然後用函數求得第2段折線的起點與終點
是否有這樣的函數
謝謝 [/B]


下面是工具箱 obj_polyline.lsp 中的一个通用函数,程序适合polyline和lwpolyline。

  1. ;|
  2.    用法:($XDLSP_PolyLine_getSegAt <多义线实体名> <测试点> <绘制标记>)
  3.    获得一个*POLYLINE线上指定一点处的“段”的信息。
  4.    对于直线段返回:(顶点索引 "kLine" 起点 终点)
  5.    对于弧线段返回:(顶点索引 "kArc" 起点 凸度 终点)
  6.    所有返回点在UCS下。
  7. |;
  8. (defun $XDLSP_PolyLine_getSegAt (e pt clr / cNa tf i nNums eTyl eSegData el
  9.                                    tf1 tf2
  10.                                 )
  11.   (setq cNa (car (xdrx_Object_ClassName e)))
  12.   (if (wcmatch cNa "*POLYLINE")
  13.     (progn
  14.       (setq tf t)
  15.       (if (setq tf (= cNa "POLYLINE"))
  16.         (setq tf (xdrx_polyline_ConvertFrom e)
  17.               tf2 tf
  18.         )
  19.         (setq tf t)
  20.       )
  21.       (if tf
  22.         (progn
  23.           (setq nNums (xdrx_polyline_numVerts e)
  24.                 i -1
  25.           )
  26.           (setq tf1 t)
  27.           (while (and
  28.                    tf1
  29.                    (< i nNums)
  30.                  )
  31.             (if (xdrx_polyline_onSegAt e (setq i (1+ i))
  32.                                        pt
  33.                 )
  34.               (progn
  35.                 (setq eTyl (xdrx_polyline_segtype e i)
  36.                       eSegData (cond
  37.                                  ((= "kLine" eTyl)
  38.                                    (setq data1
  39.                                          (xdrx_polyline_getLineSegAt e i)
  40.                                          data2
  41.                                          (xdrx_polyline_getWidthsAt e i)
  42.                                    )
  43.                                    (if (/= clr 0)
  44.                                      (progn
  45.                                        (apply
  46.                                          'command
  47.                                          (cons ".pline" data1)
  48.                                        )
  49.                                        (command "")
  50.                                        (if (= "POLYLINE" (car (xdrx_object_classname (entlast))))
  51.                                           (xdrx_polyline_ConvertFrom (entlast))
  52.                                        )
  53.                                        (xdrx_polyline_setConstantWidth
  54.                                                                        (entlast)
  55.                                                                        (/
  56.                                                                           (getvar "viewsize") 64
  57.                                                                        )
  58.                                        )
  59.                                        (xdrx_entity_setcolor
  60.                                                              (entlast) 1
  61.                                        )
  62.                                      )
  63.                                    )
  64.                                    (append
  65.                                      data1
  66.                                      data2
  67.                                    )
  68.                                  )
  69.                                  ((= "kArc") ; (xdrx_polyline_getArcSegAt e
  70.                                        ; i)
  71.                                    (list (xdrx_polyline_getpointat e i)
  72.                                          (xdrx_polyline_getBulgeAt e i)
  73.                                          (xdrx_polyline_getpointat e
  74.                                                                    (1+ i)
  75.                                          )
  76.                                    )
  77.                                  )
  78.                                )
  79.                       el (cons i (cons eTyl eSegData))
  80.                       tf1 nil
  81.                 )
  82.               )
  83.             )
  84.           )
  85.         )
  86.       )
  87.       (if tf2
  88.         (xdrx_polyline->2dpolyline e)
  89.       )
  90.     )
  91.   )
  92.   el
  93. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-10 08:06:43 | 显示全部楼层
最初由 colatree 发布
[B]...在這段的程式中,有一個函數vla-getBulge 不知幹麼用的... [/B]


多义线对象的方法. 获取多义线子段的凸度--参考帮助ActiveX and VBA Reference-Methods中的:
RetVal = object.GetBulge(Index)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-21 05:50 , Processed in 0.313145 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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