1. 首页
  2. SketchUp

SketchUp我们怎样才能在插件中有一个组件作为代码呢?

亲爱的朋友们,
我们的插件里有没有可能有一个组件?我们是否需要像处理面一样将组件更改为数组?我们将非常感谢您的帮助。由DanRathbun在post#10中解决我不这么认为。我认为通过这里的回复,他希望将SketchUp对象封送(序列化)为原始描述,以后可以重新构建。但是SketchUp Ruby类与核心Marshal类不兼容。所以他需要写他自己的编组方法。
你想要什么还不完全清楚。majid866:
就像我们为脸做的那样?
你\”为脸做什么\”和\”怎么做\”…?
你把你的脸改成阵列是什么意思?或者您想用\”将组件更改为数组\”做什么?
组件不在插件中,但它在模型中。
当然,您可以使用ruby创建组件实例,例如:
Entitisel#addŠinstance-instanceŠmethod 1

GroupŠtoŠcomponent-instanceŠmethod 2
modelŠdefinitions方法检索包含模型中所有组件定义的定义列表。
ComponentDefinitionŠinstances-instanceŠ方法用于返回任何数组此组件定义的组件实例。dezmo:
\”将组件更改为数组\”?
我想将组件更改为数组。dezmo:
实体添加实例-实例方法
此示例组件来自\”床.skp\”但我希望Bed能在我们的插件代码中,而不是作为外部文件。
我也不确定我是否理解你想要什么,但是……
Ruby API处理组件的级别低于桂。它显式处理ComponentDefinition对象和ComponentInstance对象。ComponentDefinition对象有一个实体集合,您可以使用#to#A(如果这是您的意思)将其转换为数组。没有到或从的隐式转换数组。
隐式转换对我来说也很重要,否则数组就没用了。我的唯一方法似乎是从外部文件下载组件。
您的扩展名具有自己的专用子文件夹。
在其中创建一个名为say\”compose\”的新子文件夹。
将您的SKP文件放在其中-记住,这些文件必须保存为与支持的SketchUp的最旧版本兼容的版本您的扩展…
现在您可以轻松地引用该组件文件夹和所需组件的SKP。
然后您可以将该组件的SKP加载到您的型号.定义-检查它是否已经存在-例如,扩展之前运行过,因此它已经加载了组件…
您的数组方法只会当一个单独的SKP就足够了时,扩展名的文件大小就会膨胀…
正如slbaumgartner所说,没有什么东西可以将组件转换为数组。
甚至我都不明白你的意思,或者你如何将t face转换为数组…正如你在第一篇文章中所说的那样。我很好奇你怎么解释?不管怎样,这是我想你要找的。两种选择:
1. 通过代码创建几何体并\”保存\”到定义列表,例如like=group.entities.add面([0,0,0],[1,0,0],[1,1,0],[0,1,0])面推拉(-1)#将组转换为=true#(如果只想放置一次,则为false)model.placeU组件(我的公司定义,重复)�或者您可以按照TIG的建议,通过>插入:在单独的文件中创建组件,例如*MAJ_Componet_01.skp(确保您保存在扩展支持的最早版本的SketchUp中。)将您的文件放在您的扩展文件夹结构中,如下所示:MAJ_ComponetMAJ_Componet_Data.rbMAJ_ComponetMAJ_Componet_01.skpMAY_Componet.rb(或作为TIG告诉组件也可以进入子文件夹。但我下面的例子没有==true#(false)如果你只想要plece>我不能很好地解释它。当然,将面转换为点对您来说非常简单。我下面的代码可以解释更多…face1.vertices.each do>Also, we can have some 3D points in our code and convert them to face. Mr. Tig solution is logical and you explain it well but it is not what I was looking for.Just trying to help with communication; is what you want an array OF the component? Like a code that can array a certain component how you wish?I don\”t so. I think by the replies here that he wishes to Marshal (ie, Serialize) the SketchUp object into primitive description that can be reconstituted later.But the SketchUp Ruby classes are not compatible with the core Marshal1类。因此,他需要编写自己的编组方法。是的,先生,一个可以将其转换为组件的组件数组。我们可以做面部护理。谢谢您的理解。majid866:face1.vertices.each do>You can also do something like …def face_to_a(face)face.vertices.map(&:position).map { |pt|pt.to_a.map! {|coord| coord.round(6) }}end但是,这是有问题的。您没有考虑带孔的面(内循环)和面顶点缠绕顺序即,face.vertices可能返回一个Vertex对象数组,这些对象不按顺序或不按正确的缠绕顺序重新创建面,以便normal指向正确的方向。(即你可以得到由内向外的面。)所以要继续…你需要迭代face.loops(减去face.outer_loop得到内环),并使用loop.vertices,它将按缠绕顺序返回顶点。你还可以将face.normal向量保存为数组,只需按lat
2. 插入:在单独的文件中创建组件,例如*MAJ_Componet_01.skp(确保您保存在扩展支持的最早版本的SketchUp中。)将您的文件放在您的扩展文件夹结构中,如下所示:MAJ_ComponetMAJ_Componet_Data.rbMAJ_ComponetMAJ_Componet_01.skpMAY_Componet.rb(或作为TIG告诉组件也可以进入子文件夹。但我下面的例子没有==true#(false)如果你只想要plece>

SketchUp我们怎样才能在插件中有一个组件作为代码呢? 为WP2原创文章,链接:https://www.wp2.cn/sketchup/sketchup%e6%88%91%e4%bb%ac%e6%80%8e%e6%a0%b7%e6%89%8d%e8%83%bd%e5%9c%a8%e6%8f%92%e4%bb%b6%e4%b8%ad%e6%9c%89%e4%b8%80%e4%b8%aa%e7%bb%84%e4%bb%b6%e4%bd%9c%e4%b8%ba%e4%bb%a3%e7%a0%81%e5%91%a2%ef%bc%9f/