please help me!!!!!
各位大虾:请帮帮我!
我怎么把我的选择集放入我的属性块定义中?
谢谢
victor
您的程序有几个概念错误。我给您一个标准程序。仅供参考。
AcDbBlockTable *pBlockTable;AcDbObjectId Id;
double ht=5.0;
acdbHostApplicationServices()->workingDatabase()
->getSymbolTable(pBlockTable, AcDb::kForWrite);//以写模式打开图块表
AcDbBlockTableRecord *pBlockTableRecord=new AcDbBlockTableRecord;
pBlockTableRecord->setName("表面粗糙度代号");
pBlockTable->add(Id, pBlockTableRecord);//添加图块表记录
pBlockTable->close();//关闭图块表
AcDbLine* pLine1=new AcDbLine();//直线
pLine1->setStartPoint(AcGePoint3d(0,0,0));
pLine1->setEndPoint(AcGePoint3d(-sqrt(2.0)/2.0*ht,
sqrt(6.0)/2.0*ht,0));
AcDbLine* pLine2=new AcDbLine();//直线
pLine2->setStartPoint(AcGePoint3d(0,0,0));
pLine2->setEndPoint(AcGePoint3d(sqrt(2.0)*ht,sqrt(6.0)*ht,0));
pBlockTableRecord->appendAcDbEntity(Id, pLine1);//添加实体返回ID
pBlockTableRecord->appendAcDbEntity(Id, pLine2);//添加实体返回ID
AcDbAttributeDefinition* pAttDef=new AcDbAttributeDefinition;
pAttDef->setTag("表面粗糙度");
pAttDef->setPrompt("请输入表面粗糙度的值:");
pAttDef->setTextString("3.2");
pAttDef->setPosition(AcGePoint3d(-sqrt(2.0)/2.0*ht,
sqrt(6.0)/2.0*ht*1.3,0));
pAttDef->setHeight(ht*0.8);
pAttDef->setConstant(Adesk::kFalse);
pAttDef->setInvisible(Adesk::kFalse);
pAttDef->setPreset(Adesk::kFalse);
pBlockTableRecord->appendAcDbEntity(Id, pAttDef);//添加实体返回ID
pBlockTableRecord->close();//关闭图块表记录
pLine1->close();//关闭实体
pLine2->close();//关闭实体
pAttDef->close();//关闭实体
致教师!
教师:你所说的我知道,但我现在想把我在CAD界面所选择的选择集放到我的属性块定义里边!而你是画一条直线放进去的。请在帮帮我!谢谢!!
re
我知道,你是要把选择的实体加上属性。这里有几个概念需要明白:
1。属性只能和块连用。
2。块:在图块表中有缺省的两个图块表纪录:模型空间(ACDB_MODEL_SPACE)和图纸空间(ACDB_PAPER_SPACE)。用户也可以自己创建新的图块表纪录,即块也相当于是在AutoCAD使用的Block命令。
所以,你只能这样做;
1。选择对象。
2。判断对象的类型,和几何参数。
3。在新的图块表纪录中添加上述对象和属性。
4。删除原对象。
re: 教师
那你能不能把我这个程序编出来?不胜感激!老板催我!!!sorry!
页:
[1]