首页 > 其他分享 >CAXA2023随机改块色(VS2019 ObjectArx)

CAXA2023随机改块色(VS2019 ObjectArx)

时间:2024-03-29 23:23:07浏览次数:25  
标签:pRecord CDraft VS2019 eOk CAXA2023 iter ObjectArx es pEntity

 1 //改色
 2 void cmdChangeColorX(bool bRand=true, CAXA::UInt16 color_Index = 10)
 3 {
 4     CDraft::ErrorStatus es;
 5     CRxDbObjectId objID;
 6     CRxDbEntity* pEntity=NULL;
 7     crx_name en;
 8     crx_point pt;    
 9     //拾取要改色的图元
10     while (crxedEntSel(_T("\n请选择要改色的图元:"), en, pt) == RTNORM)
11     {
12         if (bRand) color_Index = getRandColorIndex();
13         es = crxdbGetObjectId(objID, en);
14         if (es != CDraft::eOk)    return;
15 
16         //objID转pEnt
17         es = crxdbOpenCRxDbEntity(pEntity, objID, CRxDb::kForWrite);
18         if (es != CDraft::eOk || pEntity == NULL)    return;
19 
20         if (pEntity->isKindOf(CRxDbBlockReference::desc())) //是块
21         {
22             CRxDbBlockTableRecord* pRecord;
23             CRxDbBlockTableRecordIterator* iter;
24             CRxDbObjectId id;
25             //pEnt转pBlkref
26             CRxDbBlockReference* pBlkRef = CRxDbBlockReference::cast(pEntity);
27 
28             //pBlkref转blkTRid
29             CRxDbObjectId blockTableRecordId = pBlkRef->blockTableRecord();
30 
31             //blkTRid转到pRecord
32             es = crxdbOpenObject(pRecord, blockTableRecordId, CRxDb::kForWrite);
33             if (es != CDraft::eOk || pRecord == NULL)    return;
34 
35             //遍历要目标块中每一图元
36             pRecord->newIterator(iter);
37             for (iter->start(); !iter->done(); iter->step())
38             {
39                 es = iter->getEntityId(id);
40                 if (es != CDraft::eOk || !id.isValid())    continue;
41                 es = crxdbOpenCRxDbEntity(pEntity, id, CRxDb::kForWrite);
42                 if (es != CDraft::eOk)    continue;
43                 //改块中实体颜色
44                 pEntity->setColorIndex(color_Index);
45             }
46             delete iter;
47             pRecord->close();
48         }
49         else //普通图元
50         {
51             pEntity->setColorIndex(color_Index);
52         }        
53         crxedCommand(RTSTR, _T("rea"), RTNONE);    //刷新,使更改立即生效。
54     }
55     pEntity->close();
56 }

 

标签:pRecord,CDraft,VS2019,eOk,CAXA2023,iter,ObjectArx,es,pEntity
From: https://www.cnblogs.com/birdflying/p/18104828

相关文章

  • Windows VS2019+opencv配置
    本文是VS2019和opencv4.5.5版本1、配置环境变量(可能用户变量也需要配置)2、打开VS2019添加新属性表,分别为Debud和Release添加3、选择新建属性表的属性,进行下图步骤注意:debug模式和Release模式配置不一样,需要单独配置,debug模式附加依赖项比Release模式多了一个“d”,De......
  • Qt+vs2019+PCL1.12.1+VTK9.1环境搭建中的相关问题
    目录1.VS中双击Ui文件无法打开2.VTK9.0以后在QtDesigner中找不到QVTKWidget组件3.无法打开源文件"QVTKOpenGLNativeWidget.h"4.无法打开源文件"QOpenGLWidget"5.QWidget:MustconstructaQApplicationbeforeaQWidget6.无法打开源文件"QtWidgets/QApplicati......
  • 【QT入门】VS2019+QT的开发环境配置
    声明:该专栏为本人学习Qt知识点时候的笔记汇总,希望能给初学的朋友们一点帮助(加油!) 往期回顾:【QT入门】什么是qt,发展历史,特征,应用,QtCreator-CSDN博客【QT入门】Windows平台下QT的编译过程_qt编译windows应用-CSDN博客【QT入门】VS2019+QT的开发环境配置一、安装流程1......
  • vs2019单独重新安装python37_64失败解决办法(bilibili上我最早写的是https://www.bilib
    上个周末的时候,我发现用vs2019编写python的时候。代码高亮出现了奇怪的问题,进入解决方案的时候,print还是蓝色的,但是过了几秒钟后就变为黑色了,因此在最开始的时候我试图通过换一个皮肤和在管理扩展里面找扩展来解决,但是还是有相关问题。于是到vs2019对应的python文件夹找问题,目录是......
  • VS2019 打包WPF安装程序
    说明最近开发了一个WPF的小工具,最初想发布成一个非安装版的可执行程序,发现有点困难,因为是基于.NetFramework4.7开发,还引用了一些其他库,WPF程序的运行是依赖.NetFramework环境的,所以必须提前安装。于是在官网上找到ClickOne的相关说明,可以把WPF打包成安装程序,当安装时会校......
  • VS2019自带的增强型指令集和自我优化的版本速度比较.
    去年年底把工程项目由VS的2015升级到2019版本,本以为直接配置下运行环境就可以了,但是一编译发现一大堆错误,所有的错误都指向一系列的指令集,比如_mm_exp_ps、_mm_log_ps、_mm_pow_ps等等,后面发现原来从2019版本开始,编译器已经自带了这些常用的函数,所以自己函数和系统的重名了,也......
  • 在我的VS2019中重新配置2017项目生成的google test 项目
    原来的项目是其他版本的VS配置的,自己下载下来时候,本机也没有装GoogleTest所以用不起。如果重建项目在一个个引入工程代码太麻烦(文件多),所以我就想着有没有什么办法快捷配置,不用重建工程以下是我的一个配置方法,供大家交流学习:1.首先你本机要安装上GoogleTest,安装方法自查;2.如......
  • [转]vs2019升级后,启动调试,谷歌浏览器无法正常使用 - 温故纳新 - 博客园
    解决方法:vs2019按如下步骤设置:工具  =》 选项  =》调试 =》 常规 =》勾选“启用APS.NET 的 Javascript 调试(Chrome和IE)”---------------------作者:温故纳新来源:CNBLOGS原文:https://www.cnblogs.com/tomorrow0/p/14383870.html版权声明:本文为作者原创文章,转载请......
  • 《c++dll篇》VS2019生成dll及调用
    VS2019生成dll及调用生成DLL1.创建dll工程2.编写dll函数经过上述过程后工程中会生成几个自带的文件,可以自行创建或者更名,我直接在上面进行编写了。如下我先在pch.h中创建我需要调用函数的声明,他们分别用于实现加法和取最大值的功能,你可以根据自己的需求更改成自己的子程序。......
  • Objectarx system dictionary
    ObjectARXReferenceGuide>GlobalFunctions>AcRxGlobalFunctions>acrxSysRegistryFunctionacrxSysRegistryC++ACBASE_PORTAcRxDictionary*acrxSysRegistry();Filerxdict.hDescriptionReturnsapointertotheObjectARXsystemdictionary.The......