×
热门分类
微信扫码登陆

QQ登录

只需一步,快速开始

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即加入SketchUp吧! 微信扫码登陆

x
关于SketchupAPI中Point3d、Vector3d、Vertex的使用!请大家一起来讨论这3个东西的使用问题!
SUAPP3.4

精彩评论

文明上网理性发言、请文明用语

23

主题

816

帖子

1174

红宝石

技术版主

Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40

红宝石
1174

优秀点子奖优秀技术奖荣誉会员

QQ
powermedia 2009-1-15 23:33:00

看来得抛砖引玉了

首先来说说Point3d吧
简单的来说就是一个3维空间的一个点。
新建一个point=Geom::Point3d,new 1,1,1
就生成了一个点,x=1,y=1,z=1,
但是这3个数字并不是代表当前单位值,(1不等于1mm,而代表25.4mm)
point.to_s,则会返回(25.4mm,25,4mm,25.4mm)
例子:model=Sketchup.active_model
           sel=model.selection
           ......假如选择一个边线...
           point1=sel[0].start.position#当前边线的起始点pos
           point2=sel[0].end.position#当前边线的终点pos
          .......
       那么我们可以利用这2个点做点其他的事情,例如添加一个结构线:   
    ents=model.active_Entities
    ents.add_cline(point1,point2)....

      

         

23

主题

816

帖子

1174

红宝石

技术版主

Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40

红宝石
1174

优秀点子奖优秀技术奖荣誉会员

QQ
powermedia 2009-1-15 23:55:00

接着上面的说

Point3d class里有好几个常用的方法
1: distance距离
  point1=Geom::Point3d.new 0,0,0
    point2=Geom::Point3d.new 0, 100, 0
    dis=point1.distance point2
    dis=100,2点之间的距离就是100还是注意:100并不代表是当前单位的100

2:点与点之间的加减操作是个怎样的概念?
  2个Point3d点之间是不能相加的?
  只能相减,得到的是一个向量Vector3d


23

主题

816

帖子

1174

红宝石

技术版主

Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40

红宝石
1174

优秀点子奖优秀技术奖荣誉会员

QQ
powermedia 2009-1-17 08:25:00

继续

创建Point3d有2个方法:
第一:point1=[1,1,1]
第二:point2=Geom::Point3d.new 1,1,1
但是point1不等于point2
      而是:point1==point2.to_a是相等的
  to_a是把point2转换成了数组,而point1就是一个数组
例如创建结构线的例子:
   model=Sketchup.active_model
      ents=model.active_entities
   p1=[0,0,0]
      p2=[0,10,0]
     ents.add_cline(p1,p2)
另外一个方法就是:
   model=Sketchup.active_model
      ents=model.active_entities
      p1=Geom::Point3d.new 0,0,0
      p2=Geom::Point3d.new 0,10,0
     ents.add_cline(p1,p2)
以上2个结果是一样的,可见,在使用第二个例子的p1及p2的时候自动作了一个
to_a的转换(个人意见)
     

23

主题

816

帖子

1174

红宝石

技术版主

Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40

红宝石
1174

优秀点子奖优秀技术奖荣誉会员

QQ
powermedia 2009-1-17 08:33:00

继续

Point3d中的数据代表着x,y,的3维空间中的一个点,但是数据和当前的单位尺寸是需要经难过一个转换的,
例如:point1=Geom::Point3d.new 1,1,1
假如当前的单位尺寸是毫米,则代表着这个点:x=25.3mm,y=25.4mm,z=25.4mm,
那么说Point3d为什么不是直接代表这当前尺寸呢。
我认为这样有一个好处:
因为每个人的习惯不同,我用毫米,他可能用m,这样就存在着好多种可能性,你可不想编写一个插件要写出各个单位尺寸的版本吧。
所以point就直接把你的数据转换成当前的单位尺寸。

23

主题

816

帖子

1174

红宝石

技术版主

Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40

红宝石
1174

优秀点子奖优秀技术奖荣誉会员

QQ
powermedia 2009-1-18 00:17:00

继续

transform! 与transform的使用
首先先看看例子:
  transform:
    point1=[0,10,0]
    point2=[0,100,0]
    t=Geom::Transformation.new(point2)
    point3=point1.transform t
   则point3=[0,110,0],point1=[0,10,0]
transform!:
    point1=[0,10,0]
    point2=[0,100,0]
    t=Geom::Transformation.new(point2)
    point3=point1.transform! t
   则point3=[0,110,0],point1=[0,110,0]
这个transform!很有意思。前面的transform可能都能理解, 其实就是把point1点与point2经过Transformation换算,得到了point3也就是2个点的和(前面提到过2个point之间是不能直接相加的,所以进过了Transformation的转换)
就是本身做了修改(个人意见)


   

3

主题

63

帖子

3

红宝石

SU入学(等级1)

Rank: 1

红宝石
3
zqbxfev 2009-3-12 09:05:00
深入学习了。谢谢讲的这么详细!

3

主题

1355

帖子

4

红宝石

SU入学(等级1)

Rank: 1

红宝石
4
张羿 2010-7-30 08:23:39
楼主真有研究,谢谢!!
高级模式
您需要登录后才可以回帖 登录 | 立即加入SketchUp吧! 微信扫码登陆

本版积分规则

powermedia

技术版主

  • 主题

    23

  • 吧币

    203

  • 红宝石

    1174

关闭

站长推荐上一条 /2 下一条

积分兑换活动
发布主题 快速回复 返回列表 客服中心 搜索 官方QQ群
关于我们/小黑屋/手机app/国土人/SketchUp吧 /京ICP备16008035号/