v0.18が正常に動作しない

Japanese forum
Sige
Posts: 8
Joined: Sat May 18, 2019 1:51 am

v0.18が正常に動作しない

Postby Sige » Sat May 18, 2019 2:26 am

FreeCAD0.18.1での質問

現在v0.17.13541を正常に使用していますが、v0.18.16110に変更すると
PartDesignでロフト、スイープ、プリミティブの追加、削除でフリーズします。
またプロパティの表示設定でBodyの透明度を変更するとフリーズする。
Pythonが2.7.14から3.6.6に変更になったせいかと思い、v0.17をアンインストールし
AppDataの.cnfファイルをすべて削除してv0.18を新規にインストールしても変わりません。
Pythonは私の環境の他のアプリ、LireOffice、Blenderなどでも使用しています。
その影響でしょうか。他の方がそのような報告をしているのは見かけませんので、
私の環境独自の現象のように思われます。どなたかヒントをいただけないでしょうか。
パソコンはWindows10です。
User avatar
h.tsubota
Posts: 37
Joined: Mon Mar 21, 2016 2:09 pm

Re: v0.18が正常に動作しない

Postby h.tsubota » Sat May 18, 2019 9:21 am

Windows10 で FreeCAD 0.18.1 を使っていますが

> PartDesignでロフト、スイープ、プリミティブの追加、削除でフリーズします。
> またプロパティの表示設定でBodyの透明度を変更するとフリーズする。

こういった問題は起きていません。また FreeCAD にはそれぞれ専用の Python 実行環境が含まれているので他のアプリ(FreeCAD 0.17 や LireOffice、Blender)と干渉することは考えにくいように思います。

レポートビューとPythonコンソールを表示した状態で問題(フリーズ)を再現してみると、何か内部でのエラーメッセージを確認できるかも知れません。レポートビューとPythonコンソールの表示/非表示は「表示」メニューのメニューアイテム「パネル」で切り替え可能です。
Sige
Posts: 8
Joined: Sat May 18, 2019 1:51 am

Re: v0.18が正常に動作しない

Postby Sige » Sat May 18, 2019 12:14 pm

早速のホローありがとうございました。

v018.1を再度インストールしてPythonコンソールを開いて実行しました。
フリーズする直前までのコードを以下に添付します。
スイープ実行時に赤文字で何かエラーメッセージがあったように見えましたが、すぐ消えてしまって確認できませんでした。
コード自体には特に問題はなさそうですが・・・・・。


Python 3.6.6 | packaged by conda-forge | (default, Jul 26 2018, 11:48:23) [MSC v.1900 64 bit (AMD64)] on win32
Type 'help', 'copyright', 'credits' or 'license' for more information.
>>> App.setActiveDocument("Unnamed")
>>> App.ActiveDocument=App.getDocument("Unnamed")
>>> Gui.ActiveDocument=Gui.getDocument("Unnamed")
>>> App.activeDocument().addObject('PartDesign::Body','Body')
>>> Gui.activateView('Gui::View3DInventor', True)
>>> Gui.activeView().setActiveObject('pdbody', App.activeDocument().Body)
>>> App.activeDocument().Body.newObject('Sketcher::SketchObject','Sketch')
>>> App.activeDocument().Sketch.Support = (App.activeDocument().XY_Plane, [''])
>>> App.activeDocument().Sketch.MapMode = 'FlatFace'
>>> App.ActiveDocument.recompute()
>>> Gui.activeDocument().setEdit('Sketch')
>>> Gui.activateWorkbench('SketcherWorkbench')
>>> import PartDesignGui
>>> import Show.TempoVis
>>> ActiveSketch = App.ActiveDocument.getObject('Sketch')
>>> tv = Show.TempoVis(App.ActiveDocument)
>>> if ActiveSketch.ViewObject.HideDependent:
>>> objs = tv.get_all_dependent(ActiveSketch)
>>> objs = filter(lambda x: not x.TypeId.startswith("TechDraw::"), objs)
>>> objs = filter(lambda x: not x.TypeId.startswith("Drawing::"), objs)
>>> tv.hide(objs)
>>> if ActiveSketch.ViewObject.ShowSupport:
>>> tv.show([ref[0] for ref in ActiveSketch.Support if not ref[0].isDerivedFrom("PartDesign::Plane")])
>>> if ActiveSketch.ViewObject.ShowLinks:
>>> tv.show([ref[0] for ref in ActiveSketch.ExternalGeometry])
>>> tv.hide(ActiveSketch)
>>> ActiveSketch.ViewObject.TempoVis = tv
>>> del(tv)
>>>
>>> ActiveSketch = App.ActiveDocument.getObject('Sketch')
>>> if ActiveSketch.ViewObject.RestoreCamera:
>>> ActiveSketch.ViewObject.TempoVis.saveCamera()
>>>
>>> App.ActiveDocument.Sketch.addGeometry(Part.Circle(App.Vector(0.000000,0.000000,0),App.Vector(0,0,1),7.134539),False)
>>> App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('Coincident',0,3,-1,1))
>>> App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('Radius',0,7.134539))
>>> App.ActiveDocument.Sketch.setDatum(1,App.Units.Quantity('5.000000 mm'))
>>> Gui.getDocument('Unnamed').resetEdit()
>>> ActiveSketch = App.ActiveDocument.getObject('Sketch')
>>> tv = ActiveSketch.ViewObject.TempoVis
>>> if tv:
>>> tv.restore()
>>> ActiveSketch.ViewObject.TempoVis = None
>>> del(tv)
>>>
>>> Gui.activateWorkbench('PartDesignWorkbench')
>>> App.getDocument('Unnamed').recompute()
>>> App.activeDocument().Body.newObject('Sketcher::SketchObject','Sketch001')
>>> App.activeDocument().Sketch001.Support = (App.activeDocument().XZ_Plane, [''])
>>> App.activeDocument().Sketch001.MapMode = 'FlatFace'
>>> App.ActiveDocument.recompute()
>>> Gui.activeDocument().setEdit('Sketch001')
>>> Gui.activateWorkbench('SketcherWorkbench')
>>> import PartDesignGui
>>> ActiveSketch = App.ActiveDocument.getObject('Sketch001')
>>> tv = Show.TempoVis(App.ActiveDocument)
>>> if ActiveSketch.ViewObject.HideDependent:
>>> objs = tv.get_all_dependent(ActiveSketch)
>>> objs = filter(lambda x: not x.TypeId.startswith("TechDraw::"), objs)
>>> objs = filter(lambda x: not x.TypeId.startswith("Drawing::"), objs)
>>> tv.hide(objs)
>>> if ActiveSketch.ViewObject.ShowSupport:
>>> tv.show([ref[0] for ref in ActiveSketch.Support if not ref[0].isDerivedFrom("PartDesign::Plane")])
>>> if ActiveSketch.ViewObject.ShowLinks:
>>> tv.show([ref[0] for ref in ActiveSketch.ExternalGeometry])
>>> tv.hide(ActiveSketch)
>>> ActiveSketch.ViewObject.TempoVis = tv
>>> del(tv)
>>>
>>> ActiveSketch = App.ActiveDocument.getObject('Sketch001')
>>> if ActiveSketch.ViewObject.RestoreCamera:
>>> ActiveSketch.ViewObject.TempoVis.saveCamera()
>>>
>>> App.ActiveDocument.Sketch001.addGeometry(Part.ArcOfCircle(Part.Circle(App.Vector(-26.295242,-0.145143,0),App.Vector(0,0,1),26.295643),0.005520,0.675762),False)
>>> App.ActiveDocument.Sketch001.addConstraint(Sketcher.Constraint('PointOnObject',0,3,-1))
>>> App.ActiveDocument.Sketch001.addConstraint(Sketcher.Constraint('Coincident',0,1,-1,1))
>>> App.ActiveDocument.Sketch001.addConstraint(Sketcher.Constraint('Radius',0,26.295242))
>>> App.ActiveDocument.Sketch001.setDatum(2,App.Units.Quantity('50.000000 mm'))
>>> App.ActiveDocument.Sketch001.addConstraint(Sketcher.Constraint('DistanceY',-1,1,0,2,16.418786))
>>> App.ActiveDocument.Sketch001.setDatum(3,App.Units.Quantity('30.000000 mm'))
>>> Gui.getDocument('Unnamed').resetEdit()
>>> ActiveSketch = App.ActiveDocument.getObject('Sketch001')
>>> tv = ActiveSketch.ViewObject.TempoVis
>>> if tv:
>>> tv.restore()
>>> ActiveSketch.ViewObject.TempoVis = None
>>> del(tv)
>>>
>>> Gui.activateWorkbench('PartDesignWorkbench')
>>> App.getDocument('Unnamed').recompute()
>>> App.activeDocument().Body.newObject("PartDesign::AdditivePipe","AdditivePipe")
>>> App.activeDocument().AdditivePipe.Profile = App.activeDocument().Sketch
>>> App.ActiveDocument.recompute()
>>> Gui.activeDocument().hide("Sketch")
>>> App.ActiveDocument.recompute()
>>> Gui.ActiveDocument.AdditivePipe.ShapeColor=Gui.ActiveDocument.Body.ShapeColor
>>> Gui.ActiveDocument.AdditivePipe.LineColor=Gui.ActiveDocument.Body.LineColor
>>> Gui.ActiveDocument.AdditivePipe.PointColor=Gui.ActiveDocument.Body.PointColor
>>> Gui.ActiveDocument.AdditivePipe.Transparency=Gui.ActiveDocument.Body.Transparency
>>> Gui.ActiveDocument.AdditivePipe.DisplayMode=Gui.ActiveDocument.Body.DisplayMode
>>> Gui.activeDocument().setEdit('AdditivePipe', 0)
>>> Gui.Selection.clearSelection()
>>> App.ActiveDocument.recompute()   ←ここでフリーズしてしまった。
Sige
Posts: 8
Joined: Sat May 18, 2019 1:51 am

Re: v0.18が正常に動作しない

Postby Sige » Sat May 18, 2019 1:06 pm

レポートビューを表示するのを忘れていました。
アクセス違反だそうです。
意味が解りません。
Unhandled Base::Exception caught in GUIApplication::notify.
The error message is: Access violation

v0.17では全く同一操作で問題なく動作しています。
Sige
Posts: 8
Joined: Sat May 18, 2019 1:51 am

Re: v0.18が正常に動作しない

Postby Sige » Tue May 21, 2019 12:27 pm

もしかしてグラフィックボードの相性の問題?

どうもGui画面書き換えがうまくいっていないような挙動です。
ワークベンチpartでも以下のような不具合が見つかりました。

立方体を追加してその寸法などをプロパティで変更した場合、その結果が画面に反映されません。
しかし内部データは変更されているらしく、ブーリアンなどを実行するとその変更された寸法で
結果が表示されます。

PartDesignでの不具合はGui書き換えの時アクセス違反が発生してフリーズするのかも?

私のパソコンのスペックは以下のとおりです。

APU(CPU)      AMD Bristol Ridge A12-9800E(35W)
グラフィックボード  AMD Radeon RX560 4GB GDDR5
メモリー       16GB DDR4 2400MHz
Windows 10 Home 64Bit

                             以上
User avatar
h.tsubota
Posts: 37
Joined: Mon Mar 21, 2016 2:09 pm

Re: v0.18が正常に動作しない

Postby h.tsubota » Wed May 22, 2019 9:48 am

手元のマシン2台で確認しましたが特に下記の問題は再現しません。

> PartDesignでロフト、スイープ、プリミティブの追加、削除でフリーズします。
> またプロパティの表示設定でBodyの透明度を変更するとフリーズする。

グラフィックボードはそれぞれ
・Intel HD Graphics 5000
・NVIDIA GeFprce GTX 1060
で、CPU はどちらも Intel Core i7 、OS は Windows10 です。

AMD系のハードウェアは手元にないので試せていませんが、もしAMD系でない別マシンを使用できるようでしたら、そちらで問題が再現するかを確認すれば原因の切り分けができるかもしれません。
Sige
Posts: 8
Joined: Sat May 18, 2019 1:51 am

Re: v0.18が正常に動作しない

Postby Sige » Thu May 23, 2019 1:33 pm

やはりAMDが原因でした。

我が家の同居人に払い下げしたノートパソコンにインストールして試してみました。(今日は不在だったのでこっそりインストールした)
何の問題もなく動作しました。

CPU インテル core i7
グラフィックボード NVIDIA Geforce
メモリ       8GB

やはりインテルが入っていないとダメなんですかね・・・。 (インテル入ってる?   入ってない)

v0.19が公式リリースされるまで我慢しようと思っていましたが、この状況はv0.19でも変わらないような気がします。
Python3.6.6とAMDの相性のような気がします。

せっかく大画面のパソコンに変えたのにこれはショックですね。

                               以上
User avatar
h.tsubota
Posts: 37
Joined: Mon Mar 21, 2016 2:09 pm

Re: v0.18が正常に動作しない

Postby h.tsubota » Thu May 23, 2019 2:54 pm

確認ありがとうございます。

AMDのハードが問題ということでちょっと調べてみましたが確かにグラフィックボードが Radeon だと問題が起きやすいようです。
FreeCAD 0.18 から GUI フレームワークが Qt4 から Qt5 に更新されていてこの Qt5 が Radeon と相性が悪いみたいです。

・参考
- Changing of the transparency parameter on Radeon GPU problem
https://forum.freecadweb.org/viewtopic.php?t=32787
- Known OS specific Issues
https://forum.freecadweb.org/viewtopic.php?f=3&t=30573

上記の「Known OS specific Issues」の方のスレッドにはドライバーをロールバックしたら状態が良くなったという報告があります(個人的にはドライバーのロールバックはお勧めしませんが)。

もしグラフィックボードのドライバーが最新でない場合は更新すると状態が改善するかもしれません。
ドライバーは AMD のウェブサイトからダウンロードできるかと思います。
Sige
Posts: 8
Joined: Sat May 18, 2019 1:51 am

Re: v0.18が正常に動作しない

Postby Sige » Fri May 24, 2019 2:03 am

ありがとうございました。

>もしグラフィックボードのドライバーが最新でない場合は更新すると状態が改善するかもしれません。

探してみます。
Sige
Posts: 8
Joined: Sat May 18, 2019 1:51 am

Re: v0.18が正常に動作しない

Postby Sige » Fri May 24, 2019 6:14 am

その後の報告。
どなたかの参考になるかもしれないので、その後の経過を報告します。

Windowsのデバイスマネージャーでドライバーの更新→自動検索の手順で実行しました。
更新された結果はシステム情報で確認すると、実行前と実行後のドライババージョンが
23.20.15016.15→24.20.11016.13003と変更されていました。

FreeCAD v0.18.16110を再度実行してみると。フリーズはしなくなりましたが、
Body Colorが真っ白になってしまうのと、Navigation Cubeが消えてしまいました。
Navigation自体は機能します。

Body Colorはプロパティ画面ではデフォルトの数値は変わっていませんが、変更しても反映されません。

因みに、AMDホームページで確認すると最新版ドライバーが5/22リリースでバージョン26.20.11015.5009が
見つかりました。
手動でインストールする方法が解らないのと、自動検索でヒットしないのは、何か怖いのでもうしばらく
時間をおいてから自動検索で試してみようと思っています。
                                             以上