C# SolidWorks 二次开发 API — 实例:随机上色
随机上色这个功能做起来不算复杂,但是要想做的比较完美也不简单。
这一篇文章我就只做随机给装配体中的零件上色。
上色前:
上色后:
简单的代码:
private void btn_setcolor_Click(object sender, EventArgs e)
{
ISldWorks swApp = Utility.ConnectToSolidWorks();
if (swApp != null)
{
ModelDoc2 swModel = (ModelDoc2)swApp.ActiveDoc;
Configuration swConf = swModel.GetActiveConfiguration();
Component2 swRootComp = swConf.GetRootComponent();
//遍历
Utility.TraverseCompXform(swRootComp, 0, true);
swModel.WindowRedraw();
swModel.EditRebuild3();
}
}
以下是上色代码:
//如果要设定颜色
if (setcolor == true)
{
double[] matPropVals = swModel.MaterialPropertyValues;
var tempC = GetRadomColor(System.IO.Path.GetFileNameWithoutExtension(swModel.GetPathName()));
matPropVals[0] = Convert.ToDouble(tempC.R) / 255;
matPropVals[1] = Convert.ToDouble(tempC.G) / 255;
matPropVals[2] = Convert.ToDouble(tempC.B) / 255;
swModel.MaterialPropertyValues = matPropVals;
swModel.WindowRedraw();
}
public static System.Drawing.Color GetRadomColor(string name)
{
Random rnd = new Random();
//这里可以根据需要指定颜色。
if (name.Contains("m1"))
{
return System.Drawing.Color.Red;
}
return System.Drawing.Color.FromArgb(
rnd.Next(0, 255), /*红色*/
rnd.Next(0, 255), /*绿色*/
rnd.Next(0, 255) /*蓝色*/ );
}
具体代码见github或者码云,链接可以在之前的博文中找到。
posted @
2020-01-14 15:58
painezeng 阅读(
227) 评论(
0)
编辑
收藏
举报