标注样式中怎样设置箭头样式?
www.dimcax.com
标注样式中怎样设置箭头样式?
database m_db = hostapplicationservices.workingdatabase; using (application.documentmanager.mdiactivedocument.lockdocument()) { using (transaction m_tr = m_db.transactionmanager.starttransaction()) { dimstyletable m_dst = (dimstyletable)m_tr.getobject(m_db.dimstyletableid, openmode.forwrite, false); if (!m_dst.has(m_dimstylename)) { try { dimstyletablerecord m_dstr = new dimstyletablerecord(); m_dstr.name = m_dimstylename;// m_dstr.dimtxsty = m_textstyleid;//文字样式id m_dstr.dimtxt = m_textheight;//文字高度 m_dstr.dimblk =???;//箭头样式???怎样得到标注样式中内置的箭头样式块的id? m_dstr.dimasz = 1.8;//箭头大小 m_dimstyleid = m_dst.add(m_dstr); m_tr.addnewlycreateddbobject(m_dstr, true); } catch (system.exception ex) { m_ed.writemessage("\n创建新标注样式 " + m_dimstylename + " 不成功!" + " 错误信息: " + ex.message); } } else { m_dimstyleid = m_dst[m_dimstylename]; } m_tr.commit(); } }
箭头是以块的形式存在,你要改变箭头,需要重新设置注标样式箭头的块id,以下过程是返回块id,将它设置给下面属性。 .dimblk = blkid .dimblk1 = blkid .dimblk2 = blkid
public function getarrowblock(byval blkarrow as string) as objectid
dim blkid as objectid
application.setsystemvariable("dimblk", blkarrow)
dim db as database = hostapplicationservices.workingdatabase
using trans as transaction = db.transactionmanager.starttransaction()
dim bt as blocktable = ctype(trans.getobject(db.blocktableid, openmode.forread, false), blocktable)
dim btr as blocktablerecord = ctype(trans.getobject(bt.item(blkarrow), openmode.forread), blocktablerecord)
blkid = btr.objectid
trans.commit()
end using
return blkid
end function
复制代码
这个是箭头的系统变量
设置尺寸线末端显示的箭头块。 要返回默认值(实心闭合箭头显示),请输入单个句点 (.)。“新建标注样式”、“修改标注样式”和“替代当前样式”对话框中用于选择箭头块的项和名称如下所示。还可以输入用户定义的箭头块名称。注意 注释性块不能用作标注或引线的自定义箭头。 "" 实心闭合
"_dot" 点
"_dotsmall" 小点
"_dotblank" 空心点
"_origin" 原点标记
"_origin2" 原点标记 2
"_open" 打开
"_open90" 直角
"_open30" 30 度角
"_closed" 闭合
"_small" 空心小点
"_none" 无
"_oblique" 倾斜
"_boxfilled" 实心框
"_boxblank" 框
"_closedblank" 空心闭合
"_datumfilled" 实心基准三角形
"_datumblank" 基准三角形
"_integral" 完整标记
"_archtick" 建筑标记
我就是搞不明白,为什么要先把系统变量设置了才行?
这样的话,如果不把系统变量改回来,其他标注样式的箭头都会变成我现在的设置,这不是我希望的
晕哦,怎么系统变量dimblk改不回来默认值"" 了 application.setsystemvariable("dimblk", "") 出错!!!! 一样不行! 只要原先dimblk的值是默认值(就是""),application.setsystemvariable("dimblk", oldvariable)这句就会出错,晕唠
设置尺寸线末端显示的箭头块。 要返回默认值(实心闭合箭头显示),请输入单个句点 (.) application.setsystemvariable("dimblk", ".")
这个过程我已经测试过了,完全可以用了。
public shared function getarrowblock(byval blkarrow as string) as objectid
dim blkid as objectid
dim oldvariable as string = application.getsystemvariable("dimblk")
application.setsystemvariable("dimblk", blkarrow)
dim db as database = hostapplicationservices.workingdatabase
using trans as transaction = db.transactionmanager.starttransaction()
dim bt as blocktable = ctype(trans.getobject(db.blocktableid, openmode.forread, false), blocktable)
dim btr as blocktablerecord = ctype(trans.getobject(bt.item(blkarrow), openmode.forread), blocktablerecord)
blkid = btr.objectid
trans.commit()
end using
if oldvariable = "" then
application.setsystemvariable("dimblk", ".")
else
application.setsystemvariable("dimblk", oldvariable)
end if
return blkid
end function
1