davehuhudave 发表于 2010-7-16 11:22:00

再问块参照插入问题

<p>&nbsp; 用<font face="Verdana">PromptPointOptions</font>提示采得点插入块参照后,插入的点和显示图形不在一个位置,且,在插入点位置有一个奇怪的方形框与显示图形对应(无论移动哪一个,另外一个也随之移动),如图</p>
<p>&nbsp;<img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/5%3GTL7MSJI6}DB{B}I$MFD.jpg"/> </p>
<p>右上角是显示的三个图形,左下角是实际插入时候点击的位置,这三个方框随右上角的图形的运动而运动,见鬼了,望高手指教原因,代码如下:</p>
<p><font face="Verdana">Dim ed As Editor = AcadApp.DocumentManager.MdiActiveDocument.Editor<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim db As Database = AcadApp.DocumentManager.MdiActiveDocument.Database<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' 普通的点交互操作.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim optPoint As New PromptPointOptions(vbCrLf &amp; "请指定放置点:")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim resPoint As PromptPointResult = ed.GetPoint(optPoint)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If resPoint.Status &lt;&gt; PromptStatus.OK Then Return ObjectId.Null<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Using trans As Transaction = db.TransactionManager.StartTransaction()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim bt As BlockTable = trans.GetObject(db.BlockTableId, OpenMode.ForRead)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '如果没有blockName表示的块,则程序返回<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (bt.Has(blockname) = False) Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Return ObjectId.Null<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '创建一个块参照并设置插入点<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim mt As Matrix3d = ed.CurrentUserCoordinateSystem<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim p3 As Point3d = resPoint.Value.TransformBy(mt)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim block As BlockTableRecord = trans.GetObject(bt(blockname), OpenMode.ForRead)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim blockref As BlockReference = New BlockReference(p3, bt(blockname))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '以写的方式打开当前空间(模型空间或图纸空间)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim btr As BlockTableRecord = trans.GetObject(db.CurrentSpaceId, OpenMode.ForWrite)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obid = btr.AppendEntity(blockref) '在当前空间加入创建的块参照<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '通知事务处理加入创建的块参照<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; trans.AddNewlyCreatedDBObject(blockref, True)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trans.Commit() '提交事务处理以实现块参照的真实加入<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Using</font></p>
<p>&nbsp;</p>

雪山飞狐_lzh 发表于 2010-7-16 13:04:00

<p>图是看不见的</p>
<p>代码除了有点罗嗦以外,没有发现什么错误,也许错误在别的代码里</p>
<p>&nbsp;</p>
<p>把你的图重新贴上</p>
<p>最好把你的工程与插入块相关的部分做成新的工程,上传</p>

davehuhudave 发表于 2010-7-16 15:42:00

<p>图看不见?右上角有三个隐约的红色圆形哦...</p>

davehuhudave 发表于 2010-7-16 16:09:00

&nbsp;<img src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ZR6[HEYN8N4AX[%V8R9)AGE.jpg"/>

雪山飞狐_lzh 发表于 2010-7-16 17:14:00

<p>不知道你是怎么上传的,现在有很多图片上传都看不见</p>
<p>注意</p>
<p>先点[添加附件]选择文件</p>
<p>然后再点[上传附件]</p>
<p>&nbsp;</p>

davehuhudave 发表于 2010-7-19 08:46:00

不知道图片怎么回事,反正现象就是左下角有一个克隆的图形,只不过图形变成他了方框状,并且会同时移动
页: [1]
查看完整版本: 再问块参照插入问题