请选择 进入手机版 | 继续访问电脑版

01BIM社区

 找回密码
 立即注册

扫一扫,访问微社区

查看: 6001|回复: 3

基础功能函数

[复制链接]

155

主题

643

帖子

2531

积分

金牌会员

Rank: 6Rank: 6

积分
2531
发表于 2015-12-29 14:38:44 | 显示全部楼层 |阅读模式
本帖最后由 tzbm123456 于 2016-1-3 08:42 编辑


module BaseModuleVer2
module Module_Text
#1已知插入点、面法线向量、字方向向量、字内容、字体、高度、厚度、颜色、宽高比
  def self.create3dText(entities,point,normal,vtStr,str,font,height,thickness,color,ratio)

module Module_A
#################################################################################################
###园弧精度控制变量
$delter_Arc=2.mm;
################################################################################################
###精度控制要求下园绘制段数计算函数
  def self.num_circle(radius_Arc)

################################################################################################
###数组中最小值查找函数
  def self.min(numArr)

################################################################################################
###数组中最大值查找函数  
  def self.max(numArr)

################################################################################################
###0已知向量vt1,求其转到向量vt2的旋转矩阵   
  def self.transform(vt1,vt2,point)

################################################################################################
###1已知p1至p2的向量,求其与X轴的夹角  单位:弧度
  def self.vectorXY_angleX(p1p2)   #已调试通过

################################################################################################
###2已知两个向量的角度angle1至angle2,求向量1到向量2的逆时针夹角dalter_XY_Counterclockwise

################################################################################################
###3已知两个向量的角度angle1至angle2,求向量1到向量2的顺时针夹角dalter_XY_Clockwise  
  def self.dalter_XY_Clockwise(angle1,angle2)   #已调试通过

################################################################################################
###3-1已知两直线上的四点p1、p2,pt1、pt2,求 直线1与 直线2的交点数组 [](无交点)、[pp,num],
#num=0时:交点pp在p1p2和pt1pt2直线段上;
#num=1时:交点pp仅在第一条直线段上,第二条的延伸线上;
#num=2时:交点pp仅在直线段第二条,第一条的延伸线上;上;
#num=3时:交点pp在第一条和第二条的延伸线上;
  def self.intersect_Line_Line(p1,p2,pt1,pt2)   #已调试通过

################################################################################################
###4已知直线上的两点p1、p2,圆弧三点arcP1、arcP2、arcP3,求 直线与园的交点数组 [](无交点)、[pt](切点)、
###[pt1,pt2](两交点);
  def self.intersect_Line_Arc(p1,p2,arcP1,arcP2,arcP3)   #已调试通过

################################################################################################
###4-1  已知直线上的两点p1、p2,圆弧三点arcP1、arcP2、arcP3,求 直线与园的交点数组 [](无交点)、[pt](切点)、
###[pt1,pt2](两交点);
  def self.intersect_LineArr_Arc(line,centerPt,radius)   #已调试通过

####################################################################################################
###5  已知圆弧三点arcP1、arcP2、arcP3,直线上的两点p1、p2,求 直线与园的交点数组 [](无交点)、[pt](切点)、
###[pt1,pt2](两交点);
  def self.intersect_Arc_Line(arcP1,arcP2,arcP3,p1,p2)  #已调试通过

####################################################################################################
###6  已知两个圆弧的三点pArc1、pArc2、pArc3;ptArc1、ptArc2、ptArc3;
  def self.intersect_Arc_Arc(pArc1,pArc2,pArc3,ptArc1,ptArc2,ptArc3)   #已调试通过

####################################################################################################
###7-1已知圆弧经过的三点pt1、pt2、pt3,返回圆弧的圆心
  def self.arc_point3_Center(pt1_Center,pt2_Center,pt3_Center)   #已调试通过

####################################################################################################
###7-2  已知圆弧经过的三点pt1、pt2、pt3,返回圆弧的半径
  def self.arc_point3_Radius(pt1_Radius,pt2_Radius,pt3_Radius)   #已调试通过

####################################################################################################
###7-3  空间三点求圆弧角度,pt1、pt2、pt3为圆弧经过的三点  
  def self.arc_point3_Angle(pt1_Angle,pt2_Angle,pt3_Angle)   #已调试通过

####################################################################################################
###7-4  空间三点求圆弧长度,pt1、pt2、pt3为圆弧经过的三点
  def self.arc_point3_Length(pt1_Length,pt2_Length,pt3_Length)   #已调试通过

####################################################################################################
###7-5  空间三点求圆弧长度,pt1、pt2、pt3为圆弧经过的三点
  def self.arc_point3_Normal(pt1_Normal,pt2_Normal,pt3_Normal)   #已调试通过

####################################################################################################
###7_7  空间三点绘园弧,ents为Sketchup::Entities实体,pt1、pt2、pt3为圆弧经过的三点
  def self.arc_point3(ents,pt1_Ent,pt2_Ent,pt3_Ent)   #已调试通过

####################################################################################################
####8  XY二维平面三点绘园弧,ents为Sketchup::Entities实体,pt1、pt2、pt3为圆弧经过的三点

回复

使用道具 举报

155

主题

643

帖子

2531

积分

金牌会员

Rank: 6Rank: 6

积分
2531
 楼主| 发表于 2016-1-2 11:56:15 | 显示全部楼层
本帖最后由 tzbm123456 于 2016-1-3 08:31 编辑

####################################################################################################
####8  XY二维平面三点绘园弧,ents为Sketchup::Entities实体,pt1、pt2、pt3为圆弧经过的三点
  def self.arc_point3_XY(ents,pt1,pt2,pt3)   

####################################################################################################
####9已知pt1、pt2、pt3圆弧经过的三点  pt1为第一点,pt2为第二点,pt3为最后一点,
#   返回值为正直,圆弧为逆时针转;返回值为负直,圆弧为顺时针转;
  def self.arc_angle_XY(pointFirst,pointSecond,pointThree)   #已调试通过

####################################################################################################
####10  已知pt1、pt2、pt3圆弧经过的空间三点  pt1为第一点,pt2为第二点,pt3为最后一点,
#    返回值为圆弧的半径值;
  def self.arc_Radius_XY(pointFirst,pointSecond,pointThree)  #已调试通过

####################################################################################################
####11  已知pt1、pt2、pt3圆弧经过的三点  pt1为第一点,pt2为第二点,pt3为最后一点,
#    返回值为圆弧的圆心;
  def self.arc_Center_XY(pointFirst,pointSecond,pointThree)   #已调试通过

####################################################################################################
####12  已知两条直线,求其交点  return pt;
  def self.insect_line1_line2(edge1,edge2)   #已调试通过

####################################################################################################
####13  已知直线墙中线的转点坐标数组,求其两侧转点数组
  def self.wall_Zuo_You(wallptArray,you_width,zuo_width)   #已调试通过

####################################################################################################
####14  已知ptArray数组,求数组成员的交点,并用交点替换最近点
  def self.array_insect(pt_array)   #已调试

####################################################################################################
####15 判断文件中是否有给定名称的图层,有返回true,无返回false,层名称不符合规则返回nil
  def self.layername?(layer_name)

####################################################################################################
####<16已知直线段ent1、选择点pt1,直线段ent2、选择点pt2,圆角半径radius,以及实体入entities>
#<绘制新直线段1,圆弧,直线段2>
  def self.fillet3D(ent1,ent2,pt1,pt2,radius,entities)
####################################################################################################
####<17>
  #判断给定点是否在三点确定的圆弧段内  返回0——园弧段外且园弧上;1——园弧段上;2——园弧开始点;3——园弧结束

点;4——园弧段外且不在园弧上;   已调试!
    def self.point_OnArc?(point,arcPts)
            
####################################################################################################
####<18>
  #判断给定点是否在两点确定的直线段内  返回0——直线段外且直线上;1——直线段上;2——直线开始点;3——直线结束

点;4——直线段外且不在直线上
        def self.point_OnLine?(point,linePts)
               
#三、
module Module_Project
####################################################################################################
####  返回单体建筑的墙体厚
  def self.wallThickness()

####################################################################################################
####  返回单体建筑的总高度
  def self.upznElv()

####################################################################################################
####0 返回单体建筑的正负零标高
  def self.pnElv()

####################################################################################################
####1 返回单体建筑的层数数组   num[地上层数,地下层数]
  def self.lay_num()

####################################################################################################
####2  判断所给定数id_layer是否超过建筑的设计层数,超过返回false,未超过返回true;  
  def self.lay_include?(id_layer)

####################################################################################################
####3  返回给定层数id_layer的层高,超过涉及层数将返回nil
  def self.lay_CG(id_layer)

####################################################################################################
####4  返回给定层数id_layer的层标高,超过将返回nil;
  def self.lay_BG(id_layer)

####################################################################################################
####5   给定层数numbers,生成对应的层
  def self.add_Layers(numbers,onkey)

####################################################################################################
####6   选择给定层名的Sketchup::Group实体
  def self.select(layer_name)   

####################################################################################################
####7   拷贝layername1实体到layername2,同时移动、选择 trans
  def self.copy(layname1,layname2,tr)


回复 支持 反对

使用道具 举报

155

主题

643

帖子

2531

积分

金牌会员

Rank: 6Rank: 6

积分
2531
 楼主| 发表于 2016-1-2 11:56:51 | 显示全部楼层
本帖最后由 tzbm123456 于 2016-1-3 09:52 编辑

#四、
module Module_Wall
####################################################################################################
####1已知墙的group实体、切面的高度,求切面以下的体积
#要求:切面的高度〉实体楼层标高
  def self.wallVolume(ent,planeHeight)

####################################################################################################
####2已知层数laynum和类别type,求出实体体积
  def self.entSelection(height,layStr)

  end
####################################################################################################
####3已知墙体面,求其面向正面的左下角点坐标  返回[左前下角,右前下角]
  def self.wallLRBpoint(entFace)


#六、
#<尺寸标注基本参数读取、修改模板>
module Module_DimAttribute
####################################################################################################
####<读取尺寸标注的所有属性>
  def self.readAllDimAttribute()

####################################################################################################
####<修改尺寸标注的单项属性>
  def self.modifyDimAttribute(keyStr,value)
    model=Sketchup.active_model;
    model.set_attribute("DimDictionary",keyStr,value);
  end
#</修改尺寸标注的单项属性>
####################################################################################################
####<读取尺寸标注的单项属性>
  def self.readDimAttribute(keyStr,defaultvalue)

#七、圆角模板 Module_fillet
module Module_fillet
####################################################################################################
####0<已知两实体入口指针和3点,绘制圆弧>   
  def self.arc_point3(ents,pt1,pt2,pt3)

####################################################################################################
####00<已知两实体,求交点>     
  def self.insect_first_second(en1,en2)

####################################################################################################
####1<已知两直线实体和圆角半径,求[point1,pt_arc1,pt_arc,pt_arc2,point2]>   
  def self.fillet_first_second_ents(ent1,ent2,r)

####################################################################################################
####2<已知两直线的端点和圆角半径,求[point1,pt_arc1,pt_arc,pt_arc2,point2]>  
  def self.fillet_first_second_pts(pp1,pp2,pt1,pt2,r)



####################################################################################################
####<3已知直线段ent1、选择点pt1,直线段ent2、选择点pt2,圆角半径radius,以及实体入entities>
#<绘制新直线段1,圆弧,直线段2>
  def self.fillet3D(ent1,ent2,pt1,pt2,radius,entities)

module ModuleRegen
####################################################################################################
####
=begin
**Number 1
  函数名称:
          modifyNumberAndBianHao(archStr)
  参数:
       archStr:建筑构件的类型,变量为字符型,例如:"墙"、"柱"等;
  功能:
       根据参数archStr,更新建筑构件类型对应的model实体project字典中的总序数("XXNumber")
       和实体"XXAttribute"字典中对应的编号("编号");
  调用函数:
      ModuleSelect::entsDiscription(archStr);
  调用函数位置:
     本文件-ModuleSelect模板-ModuleSelect.rb;
=end
  def self.modifyNumberAndBianHao(archStr)

module ModuleSelect
####################################################################################################
####
  def self.selctDiscription(str)

####################################################################################################
####
=begin
***Number 2
函数名称:
     entDiscriptionBianHao(strAttr,numInt)
参数:  
     strAttr:实体类型名称,变量类型为字符型,如"墙"、"柱"等;
     numInt:编号序数,变量类型为整数型;
功能:
     根据给定的实体类型名称strAttr和编号序数numInt,获得对应的实体。
=end
  def self.entDiscriptionBianHao(strAttr,numInt)

####################################################################################################
####
=begin
***Number 3
函数名称:
     entsDiscriptionBianHao(strAttr,numInt1,numInt2)
参数:  
     strAttr:实体类型名称,变量类型为字符型,如"墙"、"柱"等;
     numInt1:编号序数,变量类型为整数型;
     numInt2:编号序数,变量类型为整数型;
功能:
     根据给定的实体类型名称strAttr和编号序数numInt1,编号序数numInt2,
     获得numInt1-numInt2之间对应的实体数组。
调用函数:
     entDiscriptionBianHao(strAttr,numInt1);
调用函数位置:
     本文件-本模板ModuleSelect-ModuleSelect.rb
=end
  def self.entsDiscriptionBianHao(strAttr,numInt1,numInt2)

####################################################################################################
####  
=begin
***Number 4
函数名称:
     entsDiscription(strAttr)
参数:  
     strAttr:实体类型名称,变量类型为字符型,如"墙"、"柱"等;
功能:
     根据给定的实体类型名称strAttr,获得n所有的strAttr实体数组。
=end
  def self.entsDiscription(strAttr)

####################################################################################################
####
module EntityGraghMath
  def self.facePerimeter(entity)

回复 支持 反对

使用道具 举报

0

主题

55

帖子

740

积分

高级会员

Rank: 4

积分
740
发表于 2016-2-29 11:58:27 | 显示全部楼层
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|01BIM社区 - 最专业的BIM技术交流平台 ( 渝ICP备15000873号 )

GMT+8, 2024-3-28 21:55 , Processed in 0.060697 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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