几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » DirectDWG
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


 
 
主题工具 搜索本主题 显示模式
旧 2009-05-05, 12:34 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】how should i draw a blockref

how should i draw a blockref?
how should i draw a blockref?
when i am about to draw a block reference (i am iterating through all entities in a dwg drawing) i first call odgibasedrawobject-setattributes(blockref) folowing by odgibasedrawobject-pushmodeltransform(blockref->blocktransform()). then i simply call odgibasedrawobject-draw() for every object in the block. at the and i call odgibasedrawobject-popmodeltransform(). all objects appears fine only they do not have the right properties (color, layer, etc.) and are not transformed correctly. is there other way to draw a block reference?
note: i am handling block references on higher level (before they are sent to worlddraw) because i have to create sort of a group of it in the environment i am importing into.
arno歵
in yourdrawobject::draw() method you can simply call odgibasedrawobject::draw().
it will tale care about entity traits, push byblock traits for compound object etc.
btw, oddbblockreference::worlddraw() pushes model transform and calls draw(blocktablerecord).
sergey slezkin

sergey, you were right. i do not know about the traits yet, but calling oddbblockreference::worlddraw() indeed pushes and pops the correct transformation. but - there's always a but - the transformation is not applied to gi entitites (the ones i receive in my geometry implementations - such as pline, worldline, etc.) do i have to get the model transform and apply it manualy in all my geometry functions? i hoped i would receive already transformed points. that's also why i thought no trasformations were pushed in for my blocks.
thanks
primitives come untransformed.
in dd 1.10 it would be possible to get them transformed and even projected on plane (ellipse instead of rotated circle for example).
sergey slezkin

thanks. that explains it. until 1.10 i will deal with the transforms manually. it looks to me though it is better not to call blockref::worlddraw() but iterate through the block entities, let them be transformed, and then call draw() for each of them separatelly. this way, the transformations are much simplier then in gi procs where i have to deal mostly with individual points.
as far as the traits go, i do not see that blockref::worlddraw() sets the right traits. in my gi functions, whenever i receive the primitives of a block, they have set their original properties and not the properties of the block reference. i am using efectivetraits, since the name looks like it should be used in cases like this.
thanks
1. transforming db entities.
not every entity can be transformed by any matrix.
you need to get transformed copy to leave entities in database unchanged. but even gettransformedcopy() can't transform all entities by any matrix. and transforming db entities leads to overhead.
2. to draw block reference setattributes() should be called before worlddraw. but even calling setattributes() will not take care about properties "byblock".
so i would recommend to use draw(blockref) or better
draw(layoutblocktablerecord) instead of iterating through entities manually.
sergey slezkin
1. i do create copies of db entities. i have to bacause i open the db in read-only mode.
2. i do call setattributes, but i had to override setupforentity because if i didn't, i got wrong properties (namely colors) for entities inside block.
3. unfortunatelly i cannot simply call draw(layoutblocktablerecord). i need to handle some of the original entities (hatch, dims, blocks, etc.) and not only those basic primitives i would get in geometry functions.
thanks for your kind response
arno歵
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
 


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭

相似的主题
主题 主题发起者 论坛 回复 最后发表
【转帖】how do i get to draw shapes yang686526 DirectDWG 0 2009-05-05 12:28 PM
【转帖】draw to memory yang686526 DirectDWG 0 2009-05-04 08:06 PM
【转帖】draw a cross cursor in opengl device yang686526 DirectDWG 0 2009-05-04 08:05 PM
【转帖】calculating extents draw yang686526 DirectDWG 0 2009-05-04 05:17 PM
【转帖】draw shaft using visual basic application yang686526 SolidWorks二次开发 0 2009-04-12 06:01 PM


所有的时间均为北京时间。 现在的时间是 03:56 PM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多