TA的每日心情 | 开心 昨天 06:36 |
---|
签到天数: 15 天 [LV.4]偶尔看看III
管理员
- 积分
- 1308
|
发表于 2024-10-15 18:56:45
|
显示全部楼层
- static void FpmSimpleLine_DDynBlockTest(void)
- {
- ads_name en; ads_point p;
- AcTransaction* pTrans = actrTransactionManager->startTransaction();
-
- if (acedEntSel(_T("\nPick dynamic block: "),en,p) == RTNORM)
- {
- AcDbObjectId eId;
-
- AcDbBlockReference *pBlkRef;//
- acdbGetObjectId(eId,en);
-
-
- if (pTrans->getObject( (AcDbObject*&)pBlkRef,eId,AcDb::kForWrite) == Acad::eOk)
- {
-
- AcDbObjectId idBlkTblRec = pBlkRef->blockTableRecord();
- if (AcDbDynBlockReference::isDynamicBlock(idBlkTblRec))
- {
- acutPrintf(L"Dynamic block!\n");
- AcDbDynBlockReference dynBlk(eId);
- AcDbDynBlockReferencePropertyArray aProps;
- dynBlk.getBlockProperties(aProps);
- if (aProps.length() > 0)
- {
- acutPrintf(L"There are some properties!\n");
- AcDbDynBlockReferenceProperty prop;
- AcDbEvalVariant Var;
- int i;
- for (i=0; i < aProps.length(); i++)
- {
- prop = aProps[i];
- Var = prop.value();
- acutPrintf(L"Property %d name: %s, value: %lg, readonly:%s\n",i+1,prop.propertyName().kTCharPtr(),Var.resval.rreal,prop.readOnly()?L"TRUE":L"FALSE");
- }
-
- prop=aProps[0];
- if(prop.setValue(500.0)!=Acad::eOk)
- acutPrintf(_T("\nError setting property: %s"),acadErrorStatusText(prop.setValue(500.0)));
-
- }
- }
- else
- {
- acutPrintf(_T("\nSelected block is not dynamic!"));
- }
- pBlkRef->close();
- }
- else
- {
- acutPrintf(_T("\nError: %s"),pTrans->getObject( (AcDbObject*&)pBlkRef,eId,AcDb::kForWrite));
-
- }
- }
-
- actrTransactionManager->endTransaction();
- }
- //changeBlockDynValue(eId, _T("Расстояние1"), 250.6f);
- Acad::ErrorStatus changeBlockDynValue(AcDbObjectId dynblockId, ACHAR* propertyName, double propertyValue)
- {
- AcDbObjectPointer<AcDbBlockReference> pBR(dynblockId, AcDb::kForRead);
- Acad::ErrorStatus es = pBR.openStatus();
- if (es == Acad::eWrongObjectType) { return es; }
- if (es != Acad::eOk) { return es; }
- AcDbDynBlockReference* pDynBlkRef = new AcDbDynBlockReference(dynblockId);
- pBR->close();
- if (!pDynBlkRef || !pDynBlkRef->isDynamicBlock()) { es = Acad::eInvalidContext; delete pDynBlkRef; return es; }
- AcDbDynBlockReferencePropertyArray blkPropAry; pDynBlkRef->getBlockProperties(blkPropAry);
- AcDbDynBlockReferenceProperty blkProp;
- bool isFindPropName = false;
- for (long i = 0; i < blkPropAry.length(); i++)
- {
- blkProp = blkPropAry[i];
- if (_tcsicmp(blkProp.propertyName().kACharPtr(), propertyName) != 0) continue;
- isFindPropName = true;
- if (blkProp.readOnly()) { es = Acad::eIsWriteProtected; continue; }
- if ((es = blkProp.setValue(propertyValue)) != Acad::eOk)
- {
- continue;
- }
- }
- delete pDynBlkRef;
- if (!isFindPropName)
- es = Acad::eInvalidContext;
- return es;
- }
- static void ChangeDynValue(void)
- {
- // Add your code for command TestDynBlk.ChangeDynValue here
- ads_name en; ads_point p;
- if (acedEntSel(_T("\nУкажите динамический блок: "), en, p) != RTNORM) return;
- AcDbObjectId idBR; acdbGetObjectId(idBR, en);
- AcDbObjectPointer<AcDbBlockReference> pBR(idBR, AcDb::kForRead);
- Acad::ErrorStatus es = pBR.openStatus();
- if (es == Acad::eWrongObjectType) { acutPrintf(_T("\nЭто не блок!")); return; }
- if (es != Acad::eOk) { acutPrintf(_T("\nНе могу открыть блок!")); return; }
- AcDbDynBlockReference* pDynBlkRef = new AcDbDynBlockReference(idBR);
- pBR->close();
- if (!pDynBlkRef || !pDynBlkRef->isDynamicBlock()) {
- acutPrintf(_T("\nЭто не динамический блок!"));
- delete pDynBlkRef;
- return;
- }
- ACHAR propName[512] = _T("");
- if (acedGetString(TRUE, _T("\nУкажите имя динамического свойства (тип - действительное число): "), propName) != RTNORM) return;
- double propValue = 0;
- if (acedGetReal(_T("\nУкажите значение динамического свойства - действительное число: "), &propValue) != RTNORM) return;
- AcDbDynBlockReferencePropertyArray blkPropAry; pDynBlkRef->getBlockProperties(blkPropAry);
- AcDbDynBlockReferenceProperty blkProp;
- bool isFindPropName = false;
- for (long i = 0; i < blkPropAry.length(); i++) {
- blkProp = blkPropAry[i];
- if (wcsicmp(blkProp.propertyName().kACharPtr(), propName) != 0) continue;
- isFindPropName = true;
- if (blkProp.readOnly()) {
- acutPrintf(_T("\nСвойство <%s> только для чтения!"), propName); continue;
- }
- if ((es = blkProp.setValue(propValue)) != Acad::eOk) {
- acutPrintf(_T("\nНельзя установить свойству <%s> значение %g! Ошибка: %s"),
- propName, propValue, acadErrorStatusText(es));
- continue;
- }
- }
- delete pDynBlkRef;
- if (!isFindPropName) {
- acutPrintf(_T("\nСвойство <%s> не найдено!"), propName);
- }
- }
复制代码 |
|