几何尺寸与公差论坛

 找回密码
 注册
查看: 4036|回复: 6

【求助】SolidWorks2006 获得草图颜色

[复制链接]
发表于 2007-6-18 11:54:57 | 显示全部楼层 |阅读模式
我用Feature::GetMaterialPropertyValues2 函数用在草图上是得不到颜色的,输出的double数组的值都是-1。Feature::GetMaterialPropertyValues 也得不到真实的Sketch颜色,请各位帮帮忙能不能用别的方法得到。
发表于 2007-6-18 15:03:27 | 显示全部楼层

回复: 【求助】SolidWorks2006 获得草图颜色

1)  遍历特征树
// get the feature type name
      featureTypeName = swFeature.GetTypeName();
2)判断是否为草图类型
  if ( 0 != featureTypeName.Compare(_T("OriginProfileFeature")) )
3)从草图获取sketchSegment
vSketchSegments = swSketch.GetSketchSegments();
4)获取草图的颜色
ISketchSegment::GetColor
 楼主| 发表于 2007-6-19 08:13:03 | 显示全部楼层

回复: 【求助】SolidWorks2006 获得草图颜色

谢谢yogy!我试了一下,还是不行,SolidWork API help 里说

SketchSegment 的 get_Color() 只是对Drawing有效的

我在Part里用 无论设置Sketch为什么颜色,得到的都是同一个颜色值
long 8421504 您看看还有没其他的方法??再次感谢!!
发表于 2007-6-19 10:46:37 | 显示全部楼层

回复: 【求助】SolidWorks2006 获得草图颜色

我测试和trace代码先。wait
~~~
测试结果如下:
我通过上述遍历的代码,偶尔能得到草图的不同颜色值。确实有时值不对!看来是SolidWorks的BUG。
建议:
1) open model 之后 rebuild
  swRebuildOptions_e  rebuildOptions = swRebuildAll; // rebuild any geometry not regenerated
  swModelDoc.Rebuild (rebuildOptions);
2) 去除材质
3) 草图若是白色(255,255,255),总得到深灰色的值。

PS:8421504 对应 128,128,128 深灰色
发表于 2007-6-22 12:01:28 | 显示全部楼层

回复: 【求助】SolidWorks2006 获得草图颜色

方便的话,写英文Email直接问API的技术支持吧!
apisupport@solidworks.com
 楼主| 发表于 2007-6-22 13:34:17 | 显示全部楼层

回复: 【求助】SolidWorks2006 获得草图颜色

多谢了!! 我回去试一下。
发表于 2007-6-23 14:02:36 | 显示全部楼层

回复: 【求助】SolidWorks2006 获得草图颜色

一、设置面的颜色
要考虑颜色获取的优先级
1)得到系统级别的颜色设置
//Use the integer user-preference enumerations to get and set system-level or document-level settings and options. [url=http://mkMSITStore<img src=]SldWorks::GetUserPreferenceIntegerValue[/url] and [url=http://mkMSITStore<img src=]SldWorks::SetUserPreferenceIntegerValue[/url] get and set system-level settings and options; [url=http://mkMSITStore<img src=]ModelDoc2::GetUserPreferenceIntegerValue[/url] and [url=http://mkMSITStore<img src=]ModelDoc2::SetUserPreferenceIntegerValue[/url] get and set document-level settings and options. ((from SW_API help doc))
// system option: get the default shading color for the body
defaultRGBColor = swModelDoc.GetUserPreferenceIntegerValue (185 /*swDocumentColorShading*/);
2)得到模型的材质
//This property gets or sets a material's properties in the active configuration. The material values include the color (R,G,B values), reflectivity (ambient, diffuse, specular, shininess), transparency and emission. (from SW_API help doc)
// // get the default display properties of the model If one exists, it's
// color overrides the default shading color
m_vParameters = swModelDoc.GetMaterialPropertyValues();
3)得到feature的材质
4)得到face的材质
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|几何尺寸与公差论坛

GMT+8, 2024-12-23 00:03 , Processed in 0.041169 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表