扩展一个类的例子

Chinese forum

Moderator: paullee

Forum rules
论坛规矩 / 論壇規矩 , 有用的资讯 / 有用的資訊
重要:寻求帮助之前,请先看看这里 /
重要:尋求幫助之前,請先看看這裡

另外,对论坛用户 友善!阅读FreeCAD 行为准则!
/ 另外,對論壇用戶 友善! 閱讀FreeCAD
行為準則
User avatar
johnwang
Veteran
Posts: 1345
Joined: Sun Jan 27, 2019 12:41 am

扩展一个类的例子

Post by johnwang »

在Mod/Arch/ArchStructure.py里有个Structure类:

Code: Select all

class _Structure(ArchComponent.Component):
	。。。
        if not "Nodes" in pl:
            obj.addProperty("App::PropertyVectorList","Nodes","Structure",QT_TRANSLATE_NOOP("App::Property","The structural nodes of this element"))
	。。。	
对于Beam, Nodes属性记录了起点和终点,但是却是在局部坐标系下。也就是起点永远是0,终点是长度。这个信息没有太大用处,我们需要起点和终点的全局坐标。因此要对这个类扩展一下。

1. 我们简单拷贝Nodes两行代码,改成NodesGCS如下:

Code: Select all

        if not "NodesGCS" in pl:
            obj.addProperty("App::PropertyVectorList","NodesGCS","Structure",QT_TRANSLATE_NOOP("App::Property","The structural points of this element in GCS"))
在使用Arch_beam命令时,需要在屏幕上指定两个点。第1点是起点,第2点是终点。第1点的信息已经被记录到Placement里的Base了。我们需要记录第2点的信息到新建立的NodesGCS属性。

2. 在class _CommandStructure:里有个def getPoint(self,point=None,obj=None):
找到其中 # metal profile一段,对# horizontal分支,把:

Code: Select all

                    #FreeCADGui.doCommand('s = Arch.makeStructure(p,length='+str(self.Length)+')')
改成:

Code: Select all

                    FreeCADGui.doCommand('s = Arch.makeStructure(p,length='+str(self.Length)+',bjpoints='+DraftVecUtils.toString(point)+')')
point就是我们需要保存的第2点信息。同理修改# vertical分支。

3. 修改:

Code: Select all

def makeStructure(baseobj=None,length=None,width=None,height=None,name="Structure"):
为:

Code: Select all

def makeStructure(baseobj=None,length=None,width=None,height=None,name="Structure",bjpoints=None):
并在函数最后加入:

Code: Select all

    obj.NodesGCS=bjpoints
重启FreeCAD, 生成一个beam. 就可以看到beam的属性里多了NodesGCS属性。它记录着beam终点的全局坐标信息。
hfc series CAE workbenches for FreeCAD (hfcNastran95, hfcMystran, hfcFrame3DD, hfcSU2 and more)
paullee
Veteran
Posts: 5098
Joined: Wed May 04, 2016 3:58 pm

Re: 扩展一个类的例子

Post by paullee »

可以在 Draft, Arch & BIM 上跟進 及 PR 嗎? :D
User avatar
johnwang
Veteran
Posts: 1345
Joined: Sun Jan 27, 2019 12:41 am

Re: 扩展一个类的例子

Post by johnwang »

paullee wrote: Fri Feb 11, 2022 12:39 am 可以在 Draft, Arch & BIM 上跟進 及 PR 嗎? :D
我的第1个也是唯一一个pr,等了半年。实在没兴趣再提了。
hfc series CAE workbenches for FreeCAD (hfcNastran95, hfcMystran, hfcFrame3DD, hfcSU2 and more)
paullee
Veteran
Posts: 5098
Joined: Wed May 04, 2016 3:58 pm

Re: 扩展一个类的例子

Post by paullee »

johnwang wrote: Fri Feb 11, 2022 1:16 am
paullee wrote: Fri Feb 11, 2022 12:39 am 可以在 Draft, Arch & BIM 上跟進 及 PR 嗎? :D
...等了半年...
甚麼意思 ?
User avatar
johnwang
Veteran
Posts: 1345
Joined: Sun Jan 27, 2019 12:41 am

Re: 扩展一个类的例子

Post by johnwang »

半年后才被merge.
hfc series CAE workbenches for FreeCAD (hfcNastran95, hfcMystran, hfcFrame3DD, hfcSU2 and more)
paullee
Veteran
Posts: 5098
Joined: Wed May 04, 2016 3:58 pm

Re: 扩展一个类的例子

Post by paullee »

johnwang wrote: Fri Feb 11, 2022 8:37 pm 半年后才被merge.
明白了 :D 不太懂誰可merge… 聽說可幫忙review,merge可快些 ?
User avatar
johnwang
Veteran
Posts: 1345
Joined: Sun Jan 27, 2019 12:41 am

Re: 扩展一个类的例子

Post by johnwang »

paullee wrote: Sat Feb 12, 2022 1:39 am 明白了 :D 不太懂誰可merge… 聽說可幫忙review,merge可快些 ?
半年后,当时怎么想的都忘了。如果需要改,还得重新看自己的代码。再说提交了一个之后,还有后续的想法要实现。不能等半年再想吧。这些也得是在有时间的情况下才行。

有merge权的大多只对自己感兴趣的上心。另外他们自己编程也是抽出来的时间,看别人的代码实在是没时间。这个可以理解。大部分的开源项目是缺乏贡献,这个项目是你贡献多了,它接受不了。
hfc series CAE workbenches for FreeCAD (hfcNastran95, hfcMystran, hfcFrame3DD, hfcSU2 and more)
paullee
Veteran
Posts: 5098
Joined: Wed May 04, 2016 3:58 pm

Re: 扩展一个类的例子

Post by paullee »

johnwang wrote: Sat Feb 12, 2022 2:59 am 有merge权的大多只对自己感兴趣的上心。另外他们自己编程也是抽出来的时间,看别人的代码实在是没时间。这个可以理解。大部分的开源项目是缺乏贡献,这个项目是你贡献多了,它接受不了。
:lol: 看來真的是這樣,你的PR 是 Arch Structure ? 或是甚麼? 可以Ping 一下柤關 developer, 很多時是overlook了。 如@Roy_45的PR大多是1~2 星期merge, 但 @Realthunder的超大便是以月計 :shock:
paullee
Veteran
Posts: 5098
Joined: Wed May 04, 2016 3:58 pm

Re: 扩展一个类的例子

Post by paullee »

或者可以考慮做一個 External Add-on,便沒有merge時間的問題了 :D
User avatar
johnwang
Veteran
Posts: 1345
Joined: Sun Jan 27, 2019 12:41 am

Re: 扩展一个类的例子

Post by johnwang »

paullee wrote: Sat Feb 12, 2022 3:08 am :lol: 看來真的是這樣,你的PR 是 Arch Structure ? 或是甚麼? 可以Ping 一下柤關 developer, 很多時是overlook了。 如@Roy_45的PR大多是1~2 星期merge, 但 @Realthunder的超大便是以月計 :shock:
只是增加了用File打开一种FEA文件的功能。是用C写的。不大,6个月后merge了。以后再也不提了。等不起。
他自己比较活跃。自己写自己merge。另外几个模块不是那么活跃。
RT的超大PR,确实比较头疼。没人愿意把自己的时间全花在当他助手上。得几年。FC有的是时间。
不能很快被merge, 影响参与的欲望。我现在的主要兴趣就是做add-on.自己做主。
hfc series CAE workbenches for FreeCAD (hfcNastran95, hfcMystran, hfcFrame3DD, hfcSU2 and more)
Post Reply