最近有人问到一个需求,就是需要利用Solidworks中的相机功能,给3d产品照相…这个需求听起来有点意外呀,难道画的是宝石 或者美女?
虽然听说过Solidworks里的相机功能,但说实话,一次没有用过。
进入api,搜索相机 ,啥也没有。。。 是不是错了,api只能找english.
立马baidu google bing搜索了一遍 相机的英文单词,终于确认了是Camera
哈哈哈。。。
入正题:
然后就在第一条,右边看到了我们期待已久的东西:
自带示例,抄作业咱还是会的。
private void btnCamera_Click(object sender, EventArgs e)
{
//先打开一个零件,打开哪个请随意。
SldWorks swApp = PStandAlone.GetSolidWorks();
int fileerror = 0;
int filewarning = 0;
bool boolstatus = false;
var swModel = (ModelDoc2)swApp.ActiveDoc;
var swModelDocExt = (ModelDocExtension)swModel.Extension;
// Insert a camera 插入相机
var swCamera = (Camera)swModelDocExt.InsertCamera();
// Set camera type to floating 设置为浮动
swCamera.Type = (int)swCameraType_e.swCameraType_Floating;
// Show camera 显示相机
boolstatus = swModelDocExt.SelectByID2("Camera1", "CAMERAS", 0, 0, 0, false, 0, null, 0); //注意如果是中文系统,可能名称为相机1
boolstatus = swModel.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swDisplayCameras, true);
swModel.GraphicsRedraw2();
// Get camera's pitch and yaw settings 获取相机的角度位置 设置
// 1 radian = 180º/p = 57.295779513º or approximately 57.3º
Debug.Print("Original pitch (up or down angle) = " + swCamera.Pitch * 57.3 + " deg");
Debug.Print("Original yaw (side-to-side angle) = " + swCamera.Yaw * 57.3 + " deg");
Debug.Print(" ");
// Rotate camera 旋转相机
swCamera.Pitch = -25;
swCamera.Yaw = 150;
// New pitch and yaw settings 新的位置
Debug.Print("New pitch (up or down angle) = " + swCamera.Pitch * 57.3 + " deg");
Debug.Print("New yaw (side-to-side angle) = " + swCamera.Yaw * 57.3 + " deg");
swModel.GraphicsRedraw2();
}
手动显示相机的具体编辑界面:
点开就是这个样子,右侧会出现预览: 还有很多参数,不过我也看不太懂,平时只有手机,
没有相机。
还有些详细的方法与属性:
源码:
https://gitee.com/painezeng/CSharpAndSolidWorks