ObjectARX
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Reply
Message 1 of 2
mihajlovic.milosh
852 Views, 1 Reply

AcDbField

 

 

Could someone give a small example how a block field can be created using ARX?

 

I tried it like this:


AcDbFieldArray fldArray;
AcDbField *pField_1 = new AcDbField();
AcDbDatabase* pDb = acdbHostApplicationServices()->workingDatabase();

pField_1->setEvaluationOption(AcDbField::kAutomatic);
pField_1->setFieldCode(sObjIdTag);
pField_1->evaluate(AcDbField::kAutomatic, pDb);

fldArray.append(pField_1);

String sText("\\AcObjProp Object(%<\\_FldIdx 0>%).InsertionPoint");

AcDbField *resultField = AcDbField();
resultField->setFieldCode(sText, AcDbField::FieldCodeFlag(AcDbField::kTextField | AcDbField::kPreserveFields), &fldArray);

but when I do

 

resultField->getFieldCode(AcDbField::kTextField)

it returns

"\\AcObjProp Object().InsertionPoint"

Can someone please explain what am I doing wrong?

1 REPLY 1
Message 2 of 2

Hello Mihajlovic,

 

Here is a sample code that creates a MText which displays the insertion point of a block reference.

The Field code used in this sample code has been obtained using the "Field" dialog in AutoCAD. Using the Field dialog is an easy way to verify the field code for a particular task.

 

<code>

AcDbDatabase* pDb = acdbHostApplicationServices()->workingDatabase();

AcDbField *pField = new AcDbField();
pField->setEvaluationOption(AcDbField::kAutomatic);

pField->setFieldCode
	(
	ACRX_T("%<\\AcObjProp Object(%<\\_ObjId 8796087819200>%).InsertionPoint \\f \"%lu6\">%") ,
	AcDbField::FieldCodeFlag(AcDbField::kObjectReference | AcDbField::kPreserveFields)
	);

AcDbMText* pMText = new AcDbMText();
pMText->setDatabaseDefaults();
AcDbObjectId fieldId = AcDbObjectId::kNull;
pMText->setField(ACRX_T("TEXT"), pField, fieldId);
pField->evaluate(AcDbField::kAutomatic, pDb);

AcGePoint3d InsertionPt;
int retval = acedGetPoint (
								NULL, 
								L"\nMText Insertion Point : ", 
								asDblArray(InsertionPt)
						  );

pMText->setLocation(InsertionPt);

 </code>

In the above code snippet, the object Id of the block reference whose insertion point is to be displayed in the MText is hard coded. You may want to change it before trying to run the code.

 

 



Balaji
Developer Technical Services
Autodesk Developer Network

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report

”Boost