关于acedSSGet的W模式

ObjectARX中acedSSGet选择块定义名称包含“#“字符的图块出错 ObjectARX中acedSSGet选择块定义名称包含"#"的图块出错,本文记述了解决办法 阅读详情

    日前,电子报批系统用户反应计算速度慢,因此对系统进行了调整,在计算对象面积的时候,考虑到原来用acedSSGet("X",NULL,NULL,rb,sset)把可能相关的对象都找出来然后再去checkRelation,在图形较大的时候,可能做了很多无用的比较,因此修改为如下的形式:

  AcDbEntity *pEnt;
  AcDbExtents extents;
  if(acdbOpenObject(pEnt,m_eId,AcDb::kForRead)!=Acad::eOk) {
   return false;
  }
  pEnt->getGeomExtents(extents);
  pEnt->close();
  ads_point pt1, pt2;
  pt1[X] = extents.minPoint().x;
  pt1[Y] = extents.minPoint().y;
  pt2[X] = extents.maxPoint().x;
  pt2[Y] = extents.maxPoint().y;
  rc = acedSSGet("W", pt1, pt2, rb, sset);

    修改后,速度明显提高,在处理大文件的时候,可以得到4~5的加速度,计算时间大大缩短,就很高兴的编译发布测试了。

    谁知在试用时,用户发现经常出现计算不正确的情况,从计算结果判断,很多时候没能把图形内部对象找出来,测试时候发现,在zoom all以后,执行的结果是正确的。仔细观察了执行情况,发现问题出在acedSSGet这个函数中。

    采用"W"模式调用acedSSGet,原来是要求图层必须处于显示状态,而且查找的范围除了pt1/pt2确定的矩形外,同时还仅仅在当前窗口显示范围内进行筛选。因此,在zoom all的时候计算结果正确,但在更多的时候,函数返回的集合是不正确的。

    开始是考虑操作前先执行一次zoom all的操作,但由于命令调用先后次序关系,acDocManager->sendStringToExecute(curDoc(), "Zoom/nA/n", true, false)会在计算完成后才执行,而且考虑到zoom all以后对于大文件而言,regen的耗时也较大,就采用了另外一个方法,就是每次把当前窗口缩放到当前计算对象的范围内。增加了如下代码:

  AcGePoint2d pt2d1, pt2d2;
  pt2d1.x = extents.minPoint().x;
  pt2d1.y = extents.minPoint().y;
  pt2d2.x = extents.maxPoint().x;
  pt2d2.y = extents.maxPoint().y;
  CAcadCtrl::setView(pt2d1, pt2d2, 1.2);    //这个是自己写的函数,1.2是窗口外扩比例

    加入这段代码后,计算结果执行正确,有点小问题就是当前窗口显示范围变化了,不过对此用户暂时没有什么意见。

    执行时,随着进度条的变化,当前窗口也不断闪烁,嗯,看起来还是挺像那么回事的。

在AutoCAD、CSCAD中选择实体 AutoCAD选择对象 CSCAD选择对象 acedSSGet选择类型 acedSSGet交互选择 阅读详情

相关推荐

ObjectARX选择集实战:从acedSSGet到acedSSFree的完整避坑指南

本文深入解析ObjectARX选择集操作,从acedSSGet创建到acedSSFree释放的完整生命周期,提供实战避坑指南。涵盖核心API解析、128选择集限制应对策略、高效遍历与实体操作技巧,以及高级应用与异常处理方案,帮助开发者提升AutoCAD二次开发效率与稳定性。

weixin_29215815的博客 358

acedSSGet深度解析

int acedSSGet( const ACHAR * str, const void * pt1, const void * pt2, const struct resbuf * filter, ads_name ss );参数详解:const ACHAR * str:  选择模式(例如框选窗选)const void * pt1 :两个point

panzhijiepanzhiyang的专栏 5514

Arx二次开发“选择集”

一、本节课程Arx二次开发“选择集”二、本节要讲解的知识点1、选择集的创建和删除。2、选择集中对象的增加和删除。3、对象选择的方法。4、选择集过滤器的使用。三、具体内容1、选择集的创建和删除选择集是AUTOCAD中当前图形中的一组实体,通过图元名进行引用,就是一个ads_name变量。创建选择集可以使用acedSSAdd、acedSSGet函数。acedSSGet函数提供了绝大多数创建选择集的方法...

yunyou.ke.qq.com(云幽的博客) 2749

acedSSGet()函数用法详解

大多数ObjectARX函数在处理选择集和实体时,都用名字来识别选择集或实体,该名字用一个长整型对来表示的,并对AutoCAD来维护。在ObjectARX中,该名字的类型为ads_name。在对选择集或实体进行操作之前,ObjectARX应用程序必须通过调用一个返回其名字的库函数来得到选择集或实体名字。注意:选择集和实体的名字是不稳定的,它们仅仅在AutoCAD当前图形工作时有效。如果从AutoC...

weixin_33709364的博客 1107

acedGetInput( ACHAR * str); str Pointer to the result buffer

如果成功,函数返回RTNORM;如果当前命令是使用ACRX_CMD_INTERRUPTIBLE标志注册的,并且文档收到了来自AcApDocManager::sendModelessInterrupt()调用的无模态中断信号,则返回RTMODELESS。这个函数只有在紧随用户输入函数调用之后才有意义,且之前的调用必须返回RTKWORD(或者在acedDragGen中返回RTSTR)。它截断用户输入中超过131个字符的部分,并将最多132个字符的结果存储在指定的缓冲区中(第132个位置保留给空字符)。

我的博客 341

ObjectArx创建指定块

ObjectArx基于CAD二次开发 根据用户输入的块名以及拾取的实体创建指定块! 采用MFC非模态对话框!

ObjectARX中关于选择集和实体图元名的常用接口

本文介绍了ObjectARX中关于选择集和实体图元名的常见接口

_Santiago的博客 2196

UFS 3.1协议实战解析:从MIPI M-PHY到SCSI命令的完整链路拆解

本文深入解析UFS 3.1存储协议,从MIPI M-PHY物理层到SCSI命令层,完整拆解数据链路。通过分析协议栈三层架构(UIC、UTP、UCS),结合Wireshark抓包实战,详解UPIU数据包传输与SCSI命令封装,并探讨GEAR模式对性能与功耗的影响,为嵌入式存储开发与调试提供实用指南。

weixin_29207533的博客 420

ObjectARX选择集与实体图元名操作实战指南

本文深入解析了ObjectARX开发中核心的选择集与实体图元名操作。选择集如同智能的“对象管理器”,用于高效筛选和批量操作实体;实体图元名则是实体的“临时身份证”,是程序识别和操作具体图元的唯一凭证。文章通过实战代码,详细介绍了使用acedSSGet函数创建选择集的四种模式、实体数据的获取与修改(acdbEntGet/acdbEntMod),以及创建新实体(acdbEntMake)的方法,并分享了内存管理、性能优化及交互式拖动等进阶技巧与避坑指南。

peach的博客 658

stm32H743IIT6 cubemx HAL USB UVC摄像头基础

stm32性能已经很强了, 可以驱动ov5640摄像头, 所以可以把摄像头接在stm32上, 当作一个摄像头驱动器, 连接到电脑上 开发环境: stm32cubemx 6.0.1 单片机: 自己做的stm32h743iit6核心板,兼容正点原子 学习资料: 圈圈学USB 鱼鹰谈单片机 从零开始学习USBhttps://to-run-away.blog.youkuaiyun.com/article/details/85038393 整个项目是基于CDC串口上修改 1 stm32 USB 代码概览 ..

紫枫洛天的博客 7750

5分钟搞懂SCMA:稀疏码多址接入的核心原理与实战应用

本文深入浅出地解析了SCMA(稀疏码多址接入)的核心原理与实战应用。通过对比传统正交多址技术,阐释了SCMA如何通过非正交叠加和稀疏码本设计,实现远超资源单元数的用户接入,从而有效应对5G海量机器通信(mMTC)的挑战。文章还探讨了其在上行海量连接、免授权接入等场景的应用潜力及工程实现中的关键考量。

zeta9的博客 264

ObjectARX(C++)-ADSRX和用户交互-选择集(SelectionSet)

一,选择集的创建和删除 (1)使用的的ObjectARX的向导创建一个新工程名称为SelectionSet  创建完成后,编译,若出错:  错误C2338:/ RTCc拒绝符合代码,因此C ++标准库不支持它。删除此编译器选项,或定义_ALLOW_RTCc_IN_STL以确认您已收到此警告。 需要做如下修改: ①debug设置为64位 ②较小类型检查设置为:否 (2)注册...

渲染引擎开发 8522

python爬虫抖音 个人资料 仅供学习参考 切勿用于商业

本文仅供学习参考 切勿用于商业 本次爬取使用fiddler+模拟器(下载抖音APP)+pycharm 1. 下载最新版本的fiddler(自行百度下载),以及相关配置 1.1.依次点击,菜单栏-Tools-Options-HTTPS,如图1红框打钩,HTTPS旁边Connections配置,如图2红框打钩 1.2.再次点击HTTPS栏,点击Actions选择第二个…to ...

dbva7063的博客 1491

acedssget返回错误码-5001原因

原因可能是没有指定过滤机对象 也可能是对象dwgin out函数有问题!

CPUGeometry的博客 2881

用SPSS做信效度分析

对问卷进行Cronbach’s Alpha信度检验。如果此值高于0.8,则说明信度高;如果此值介于0.7-0.8之间,则说明信度较好;如果此值介于0.6~0.7,则说明信度可接受;如果此值小于0.6,说明信度不佳。下面利用SPSS进行分析,点击分析–标度–可靠性分析选项,选中所要分析的问卷数据或题目。得到结果,我们要看这个有用的结果,当克隆巴赫Alpha系数(也可以看标准化后的)大于0.8时候,说明问卷信度较高。

小高~的博客 1万+

高通QCS2290 SecureBoot全流程实战:从密钥生成到NON-HLOS.bin生成

本文详细拆解了高通QCS2290平台SecureBoot安全启动技术的端到端实战流程。从开发环境搭建、RSA密钥对生成与证书链构建,到关键XML配置文件修改、固件编译与数字签名,最终完成NON-HLOS.bin集成打包,为嵌入式开发者提供了一份清晰、可操作的安全启动部署指南。

weixin_28273593的博客 299

实例代码:acedSSGet做选择的时候使用关键字(:K)

实例代码:acedSSGet做选择的时候使用关键字(:K) 发表于 2014 年 11 月 13 日 由 boitboy //----------------------------------------------------------------------------- //----- acrxEntryPoint.cpp //--------------

zzia72的专栏 2778

手把手教你ensp仿真搭建校园网(含防火墙及无线网络)系列(一)校园网核心交换机配置

本系列博客将带你从零开始,使用 华为 eNSP(Enterprise Network Simulation Platform) 仿真搭建一个完整的校园网络,涵盖 核心层、汇聚层、接入层、防火墙安全策略、无线AC+AP组网 等实战场景。无论你是网络初学者还是希望深化实战经验的工程师,都能通过本教程掌握企业级网络的规划、配置与排错技巧。

echo的博客 3797

acedSSGet 翻译

ObjectARX 参考指南>全局函数>AcEd 全局函数>acedSSGet 函数 acedSSGet 折叠全部 C++ int acedSSGet( const ACHAR * str, const void * pt1, const void * pt2, ...

aeu9737的博客 1024

数仓解惑:数据仓库常见建模方法与大数据领域建模实例综述

为什么需要数据建模? 为什么要进行数据仓库建模? 随着DT时代互联网、智能设备等信息技术的发展,数据开始井喷式的增长,如何讲这些数据进行有序、有结构地分类组织存储是我们面临的一个挑战。 如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置,而不是乱糟糟的 大数据的数仓建模是通过建模的方法更好的组织、存储数据,以便在 性能、成本、效率和数据质量之间找到最佳平衡点。一般主要从下面四点考虑 ...

云祁QI 5850

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

函数设计之美--函数需要返回错误码吗(一)?

很久以前我就考虑这样一个问题:有这样一个函数,它的功能是从一个整数集合中返回最大的那个数,如何设计这个函数的签名了?当时没有得出令自己满意的答案,所以就搁浅了。今天重新思考,终于有所悟!现在把我思索的整个过程展现于此。最直观的函数签名设计如下:int GetMaxElement(ArrayList eleList) ;乍看之下,很好,很直接的反映了意图。稍微深入一点就

zhuweisky 820

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

CAD 选择集

CAD中构建选择集的两个函数:acedSSAdd和acedSSGet,但是都需要使用acedSSFree来释放内存空间。 1. int acedSSAdd(const ads_name ename, const ads_name sname, ads_name result); 若ename和sname都是空指针,则创建一个未包含任何成员的选择集。 若ename指向有效的实体,而sname为

Alexander_Frank的博客 3941

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ObjectARX C++中的常用方法

3.8   在AutoCAD中选择实体 1. ads_name[在AutoCAD 2000中仍为此名]、acdbNameSet()[ads_name_set()]、acdbNameEqual()[ads_name_equal()]、acdbNameClear()[ads_name_clear()]、acdbNameNil()[ads_name_nil()] 在ADS、ADSRX或ObjectA...

weixin_33681778的博客 1347
上一篇: 关于AutoCAD中的打开文档操作
下一篇: setView的实现
Aug
Aug
博客等级 码龄22年 6粉丝 11原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值