找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1042|回复: 9

[已解决] 2020.06.27api xdrx-getnearpt后面参数为点表时,返回的图元是哪个的?

[复制链接]

已领礼包: 202个

财富等级: 日进斗金

发表于 2020-6-27 21:08:56 | 显示全部楼层 |阅读模式
悬赏20D豆已解决
本帖最后由 dyjwyqz5221 于 2020-6-27 21:10 编辑

2020.06.27版本api用(entsel)选择一个多段线,pt为随意一个点,采用下列语句返回值也有图元,这个图元指的是哪个的?
查找后没找到这个图元。

(progn
        (setq pts (xdrx-entity-getstretchpoint (car(entsel)))
                pt (getpoint)
        )
        (apply 'xdrx-getnearpt (cons pt pts))
)


返回值:
选择对象: (<图元名: 7ff44b765950> (-7254.32 32951.1 0.0))

后面这个点为最近点没问题。
之前参数为点表时,返回值为:(最近点、最远点)。



最佳答案

查看完整内容

支持点表, 给点表,当多段线处理,相找当于是实体一样,找最近点,,对只是点表的, 返回的实体名部分是NIL或者无意义
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2020-6-27 21:08:57 | 显示全部楼层
本帖最后由 newer 于 2020-6-27 21:26 编辑

支持点表, 给点表,当多段线处理,相找当于是实体一样,找最近点,,对只是点表的, 返回的实体名部分是NIL或者无意义

评分

参与人数 1D豆 +5 收起 理由
dyjwyqz5221 + 5 热心帮忙奖!

查看全部评分

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

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2020-6-27 21:33:30 | 显示全部楼层
明白了,谢谢!

点评

增加进去了点表支持而已,API有N多种方法 甚至: (xdrx-getpropertyvalue pts "getclosestpointto" pt) 也行 xdrx-getpropertyvalue 也支持点表 给个点表,也可以查下面各种属性 命令: (xdrx-getpro  详情 回复 发表于 2020-6-27 21:51
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2020-6-27 21:51:54 | 显示全部楼层
本帖最后由 newer 于 2020-6-27 21:53 编辑

增加进去了点表支持而已,API有N多种方法

  1. (defun c:tt ()
  2.   (xdrx-begin)
  3.   (if (setq e (xdrx-entsel
  4.                 "\n拾取多段线获取点表<退出>:"
  5.                 '((0 . "*polyline"))
  6.               )
  7.             pt (getpoint "\n测试点<退出>:")
  8.       )
  9.     (progn (setq pts (xdrx-getpropertyvalue (car e) "vertices"))
  10.            (setq g    (xdge::constructor "kcompositecrv3d" pts)
  11.                  near (xdrx-getpropertyvalue g "getclosestpointto" pt t)
  12.            )
  13.       (xdrx-prompt "\nnear=" near)
  14.       (xdrx-sysvar-push '("pdmode" 35))
  15.       (xdrx-point-make near)
  16.     )
  17.   )
  18.   (xdrx-end)
  19.   (princ)
  20. )



甚至:
(xdrx-getpropertyvalue pts "getclosestpointto" pt)  也行

xdrx-getpropertyvalue 也支持点表
给个点表,也可以查下面各种属性 , API 就是想方设法的方便编程,让代码更短,同时效率更高

命令: (xdrx-getpropertyvalue pts)


------       Geom Entity Method       ------


<kCompositeCrv3d>:

   Edit Functions:
        ├───setCurveList

   Query Functions:
        ├───getCurveList
        ├───getCurveList
        ├───Vertices
        ├───Bulges
        ├───LineSegAt
        ├───ArcSegAt
        ├───PointAt
        ├───BulgeAt
        ├───isOnlyLines
        ├───isOnlyArcs
        ├───hasBulges
        ├───OnSegAt
        ├───ToBox
        ├───NumVerts
        ├───globalToLocalParam
        ├───localToGlobalParam


<kCurve3d>:

   Bounding Box Functions:
        ├───boundBlock
        ├───orthoBoundBlock

   Closest Point Functions:
        ├───closestPointTo
        ├───projClosestPointTo

   Degeneracy Functions:
        ├───isDegenerate

   Distance Functions:
        ├───distanceTo

   Edit Functions:
        ├───setInterval

   Evaluation Functions:
        ├───evalPoint

   Geometric Inquiry Functions:
        ├───hasEndPoint
        ├───hasStartPoint
        ├───isClosed
        ├───isCoplannarWith
        ├───isLinear
        ├───isPeriodic
        ├───isPlannar

   Length Functions:
        ├───area
        ├───areaOf
        ├───length
        ├───paramAtLength

        ├───porintAtLength

   Parameterization Functions:
        ├───paramOf
        ├───reverseParam

   Point Containment Functions:
        ├───isOn
        ├───orthoProject
        ├───project

   Query Functions:
        ├───startParam
        ├───endParam
        ├───firstdeiv
        ├───firstderiv-
        ├───secondDeriv
        ├───secondDeriv-
        ├───getClosestPointTo
        ├───getInterval
        ├───getLocalClosestPoints
        ├───getNormalPoint
        ├───getProjClosestPointTo
        ├───getSamplePoints
        ├───getSplitCurves
        ├───getTrimmedOffset

   Subdivide Functions:
        ├───explode


<kEntity3d>:

   Equality Checking Functions:
        ├───isEqualTo

   Point Containment Functions:
        ├───isOn

   Type Identification Functions:
        ├───isKindOf
        ├───type


------       DB Entity Method       ------

Class AcDbPolyline:

    ├─ToBox
    ├─AllInnerAngles
    ├─AllOuterAngles
    ├─Angle
    ├─AngularLineVector
    ├─AllSegs
    ├─SegAt
    ├─ArcSegs
    ├─ArcSegAt
    ├─ArcSegIndex
    ├─LineSegIndex
    ├─BulgeAt
    ├─Bulges
    ├─Elevation
    ├─ConstantWidth
    ├─Get
    ├─LineSegAt
    ├─Length
    ├─Lengths
    ├─HasBulges
    ├─HasPlinegen
    ├─HasWidth
    ├─InAngle
    ├─IsSelfCrossting
    ├─isInnerAngle
    ├─isOuterAngle
    ├─IsOnlyLines
    ├─NearIndex
    ├─Normal
    ├─NumVerts
    ├─OnSegAt
    ├─PointAt
    ├─PrevNextIndex
    ├─-Index+
    ├─SegType
    ├─SelfIntPoints
    ├─SelfIntParams
    ├─Thickness
    ├─Vertices
    ├─FeaturePoints
    ├─WidthsAt
    ├─StartWidth
    ├─EndWidth
    ├─OutLine (NULL or Index or (Index and (Int or Real))
Class AcDbCurve:

    ├─Area
    ├─Centroid
    ├─DistanceTo
    ├─Divide
    ├─EndParam
    ├─EndPoint
    ├─GetClosestPointTo
    ├─GetFirstDeriv
    ├─GetFirstDeriv-
    ├─GetSecondDeriv
    ├─GetSecondDeriv-
    ├─GetPointAtParam
    ├─GetPointAtDist
    ├─GetPointsAtDist
    ├─GetPointsAtDists
    ├─GetParamAtPoint
    ├─GetParamAtDist
    ├─GetDistAtPoint
    ├─GetDistAtParam
    ├─GetSamplePoints
    ├─IsClosed
    ├─IsOn
    ├─IsPeriodic
    ├─MidPoint
    ├─StartPoint
    ├─StartParam
    ├─Length


Class AcDbEntity:

    ├─9PT
    ├─Centroid
    ├─GeomExtents
    ├─BoundingBox
    ├─Elevation
    ├─Color (None or T[real color])
    ├─ColorIndex (None or T)
    ├─ECS
    ├─IsMemoryEntity
    ├─Layer (None or T or NIL)
    ├─Layout
    ├─Linetype (None or T or NIL)
    ├─LinetypeScale
    ├─LineWeight
    ├─Project(Plane Normal T)
    ├─OrthoProject(Plane  T)
    ├─Plane
    ├─PlotStyleName
    ├─StretchPoint
    ├─Transparency
    ├─Visibility

Class AcDbObject:
    ├─ClassName
    ├─ExtensionDictionary
    ├─FieldDictionary
    ├─IsA
    ├─IsAProxy
    ├─IsErased
    ├─IsReallyClosing
    ├─Handle
    ├─HasFields
    ├─HasPersistentReactor
    ├─MyParent
    ├─ObjectID
    ├─Owner
    ├─xData


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

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2020-6-27 23:21:00 | 显示全部楼层
查找参考点距离最近的组包围盒最近的是哪个包围盒吗?在包围盒不绘制成实体的情况下

点评

目标要是曲线,就是去找曲线上的最近点 如果是其他实体,就是找包围盒上的最近点  详情 回复 发表于 2020-6-28 00:52
API 实体类型共三种 1、数据库实体 普通的CAD实体 2、数据库内存实体 new出来数据库实体,但是没添加到图形数据库中,主要用比如 点监视器 动态显示,因为没添加到数据库,只能通过点监视器来“显示”,普通实  详情 回复 发表于 2020-6-28 00:00
把你给的点表,建立多段线,至于是盒子还是其他的,看你建点表的时候怎么来的  详情 回复 发表于 2020-6-27 23:41
(xdrx-getpropertyvalue pts "isPlannar") 相当于 (setq g (xdge::constructor "kcompositecrv3d" pts)) (xdge::getpropertyvalue g "isPlannar") (xdrx-free g) 就是API内部帮你建立了多段线的几何实体AcGeC  详情 回复 发表于 2020-6-27 23:39
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2020-6-27 23:39:42 | 显示全部楼层
本帖最后由 newer 于 2020-6-27 23:45 编辑
dyjwyqz5221 发表于 2020-6-27 23:21
查找参考点距离最近的组包围盒最近的是哪个包围盒吗?在包围盒不绘制成实体的情况下

(xdrx-getpropertyvalue pts "isplanar")
相当于
(setq g (xdge::constructor "kcompositecrv3d" pts))
(xdge::getpropertyvalue g "isplanar")
(xdrx-free g)

就是API内部帮你建立了多段线的几何实体AcGeCompositeCrv3d, 然后直接查询它的几何方法,除了几何方法查询,也同时支持DB实体查询
(xdrx-getpropertyvalue pts "divide" 5 t) --->点表每两个顶点间再5等分
相当于
(setq pl(xdrx-polyline-make pts))
(xdrx-getpropertyvalue pl "divide" 5 t)
(xdrx-entity-delete pl)

结论:就是在API内部,把点表建立数据库实体AcDbPolyline和几何实体AcGeCompositeCrv3d,然后根据你查询的属性是DB实体的,还是GE实体的,分别建立不同的对象模型去查询。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2020-6-27 23:41:47 | 显示全部楼层
dyjwyqz5221 发表于 2020-6-27 23:21
查找参考点距离最近的组包围盒最近的是哪个包围盒吗?在包围盒不绘制成实体的情况下

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2020-6-28 00:00:49 | 显示全部楼层
本帖最后由 newer 于 2020-6-28 00:07 编辑
dyjwyqz5221 发表于 2020-6-27 23:21
查找参考点距离最近的组包围盒最近的是哪个包围盒吗?在包围盒不绘制成实体的情况下

API 实体类型共三种
通过函数 xdrx-type 或 xdrx-object-type 查看命令: (setq c (xdrx-getpropertyvalue pts "isplanar"))
<图元名: 19b696cc790>

命令: (xdrx-object-type c)
"AcGe::kPlane"

命令: (setq txt (xdrx-text-make))
<图元名: 19b4e5fd6e0>

命令: (xdrx-object-type txt)
"AcDbText"

1、数据库实体
普通的CAD实体

2、数据库内存实体
new出来数据库实体,但是没添加到图形数据库中,主要用比如 点监视器 动态显示,因为没添加到数据库,只能通过点监视器来“显示”,普通实体通过 xdrx-entity->memory 转换成内存实体,内存实体通过 xdrx-entity-make 创建,添加到数据库
API提供的创建对象函数,都支持生成内存实体,
比如:(setq e (xdrx-text-make)) 建立的内存实体,然后你可以通过(xdrx-setpropertyvalue e "属性" .....)去设置具体的

3、数学几何模型实体
ARX提供的数学几何模型,数据库的曲线类实体AcDbCurve,都有数学模型对应,数学模型提供了更多的方法去处理问题。纯数学的模型,处理速度快。ACAD数据库曲线类对象都通过数学几何模型,提供了完美的图形计算几何的各种方法

内存实体和几何实体,用完要通过xdrx-free 或 xdrx-object-release 释放

或者 xdrx-end 释放所有的动态建立的内存和几何实体


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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2020-6-28 00:52:29 | 显示全部楼层
dyjwyqz5221 发表于 2020-6-27 23:21
查找参考点距离最近的组包围盒最近的是哪个包围盒吗?在包围盒不绘制成实体的情况下

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

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 19:59 , Processed in 0.216985 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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