乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 129|回复: 9

C#开发CAD这么弱吗?zoom都这么难解决

[复制链接]

8

主题

15

帖子

3

银币

初来乍到

Rank: 1

铜币
47
发表于 2015-7-28 17:56:00 | 显示全部楼层 |阅读模式
C#开发CAD这么弱吗?zoom都这么难解决
大家是怎么解决的?
回复

使用道具 举报

0

主题

37

帖子

2

银币

初来乍到

Rank: 1

铜币
37
发表于 2015-8-1 08:47:00 | 显示全部楼层
可以调用com库的zoom×××
回复

使用道具 举报

75

主题

306

帖子

10

银币

中流砥柱

Rank: 25

铜币
606
发表于 2015-8-1 15:41:00 | 显示全部楼层
_
    Private Shared Function acedCmd(ByVal rbp As IntPtr) As Integer
         
    End Function
    Public Shared Sub ZoomWindow(ByVal Point1 As Point3d, ByVal Point2 As Point3d)
        Dim res As New ResultBuffer
        res.Add(New TypedValue(Autodesk.AutoCAD.Runtime.LispDataType.Text, "._ZOOM"))
        res.Add(New TypedValue(Autodesk.AutoCAD.Runtime.LispDataType.Text, "_W"))
        res.Add(New TypedValue(Autodesk.AutoCAD.Runtime.LispDataType.Point3d, Point1))
        res.Add(New TypedValue(Autodesk.AutoCAD.Runtime.LispDataType.Point3d, Point2))
        acedCmd(res.UnmanagedObject)
    End Sub
平台调用,很方便!!
回复

使用道具 举报

9

主题

29

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2015-8-10 11:06:00 | 显示全部楼层
Autodesk.AutoCAD.Internal.Utils.ZoomAuto(1, 1, 1, 1, 1)
回复

使用道具 举报

44

主题

185

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
361
发表于 2015-9-6 20:46:00 | 显示全部楼层

guohp仁兄能否用C#改写下?感谢,感觉用.NET的ZE不准确,我都是通过com的
回复

使用道具 举报

75

主题

306

帖子

10

银币

中流砥柱

Rank: 25

铜币
606
发表于 2015-9-9 10:37:00 | 显示全部楼层
  1. [DllImport("acad.exe", EntryPoint = "acedCmd", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
  2. private static extern int acedCmd(IntPtr rbp);
  3. public static void ZoomWindow(Point3d Point1, Point3d Point2)
  4. {
  5.         ResultBuffer res = new ResultBuffer();
  6.         res.Add(new TypedValue(Autodesk.AutoCAD.Runtime.LispDataType.Text, "._ZOOM"));
  7.         res.Add(new TypedValue(Autodesk.AutoCAD.Runtime.LispDataType.Text, "_W"));
  8.         res.Add(new TypedValue(Autodesk.AutoCAD.Runtime.LispDataType.Point3d, Point1));
  9.         res.Add(new TypedValue(Autodesk.AutoCAD.Runtime.LispDataType.Point3d, Point2));
  10.         acedCmd(res.UnmanagedObject);
  11. }
回复

使用道具 举报

54

主题

552

帖子

11

银币

中流砥柱

Rank: 25

铜币
767
发表于 2015-10-6 18:17:00 | 显示全部楼层

Autodesk.AutoCAD.Runtime.LispDataType.Text
这介.net 4.0的功能吧?
.net 2.0显示没有这个
回复

使用道具 举报

19

主题

154

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
230
发表于 2015-10-8 09:07:00 | 显示全部楼层
这个……。NET相比较之前的ARX还是有很多地方没有完善的,如果不将之前的ARX打包,则自己实现起来就比较麻烦了
回复

使用道具 举报

9

主题

66

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
102
发表于 2016-1-13 21:10:00 | 显示全部楼层
C#没有这么弱。
Zoom,需要对底层的视口记录操作,如下面代码,获取到ViewTableRecord 对象后,对其CenterPoint、Width、Height属性进行设计即可。复制代码
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2016-3-1 17:08:00 | 显示全部楼层

cad2006呢,Editor貌似没有GetCurrentView()和SetCurrentView()方法啊
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 06:00 , Processed in 0.348092 second(s), 72 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表