动态块和相关w
你好我在网上查了一些关于这个问题的信息,但我没有找到任何合理的解决方案。请帮忙
问题是:
我有一个动态块(名为Bore_Hole,它附加到post),它几乎没有动态属性,包括移动。移动属性应移动相关的水平线,垂直尺寸应显示从水平线到块顶部的距离。如果我手动插入这个块,一切都很好。当我通过编程更改动态特性时,问题就会出现,线被正确移动,但尺寸保持默认值。
这是我的代码:
using System;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.EditorInput;
namespace InsertingBlock
{
public class MyCommands
{
public void MyCommand()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
Transaction tr = db.TransactionManager.StartTransaction();
string NazwaBloku = "Bore_Hole";
using (tr)
{
BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
BlockTableRecord btr = new BlockTableRecord();
if (!bt.Has(NazwaBloku))
{
ed.WriteMessage("\n Blok o nazwie Bore_HOle nie istnieje");
}
else
{
bt.UpgradeOpen();
BlockTableRecord ms = (BlockTableRecord)tr.GetObject(bt, OpenMode.ForWrite);
ObjectId blockId = bt;
ed.WriteMessage("\nblockId" + blockId.ToString());
Point3d pt = new Point3d(0, 0, 0);
BlockReference br = new BlockReference(pt, blockId);
ms.AppendEntity(br);
DynamicBlockReferencePropertyCollection pc = br.DynamicBlockReferencePropertyCollection;
foreach (DynamicBlockReferenceProperty prop in pc)
{
if (prop.PropertyName.ToUpper() == "VISIBILITY1")
{
ed.WriteMessage("\nIstnieje taka właściwość");
prop.Value = "2";
}
if (prop.PropertyName.ToUpper() == "D1")
{
double length = 2.5;
prop.Value = length;
}
ed.WriteMessage("\nProperty:\"{0}\":{1}", prop.PropertyName, prop.UnitsType);
if (prop.Description != "")
{
ed.WriteMessage("\nDescription: {0}", prop.Description);
}
if (prop.ReadOnly)
{
ed.WriteMessage("read only");
}
bool first = true;
foreach (object value in prop.GetAllowedValues())
{
ed.WriteMessage(first ? "\nAllowed values: [" : ", ");
ed.WriteMessage("\"{0}\"", value);
first = false;
}
if (!first) ed.WriteMessage("]");
ed.WriteMessage("\nCurrent value: \"{0}\"\n", prop.Value);
}
tr.AddNewlyCreatedDBObject(br, true);
}
tr.Commit();
}
}
}
}
我使用的是VS 2008和autocad2010。
钻孔块。图纸
页:
[1]