-
CDemo資料庫內容補正
-
倉儲python-solvespace已更新
未支援項目
*某些項目未紀錄於DOC.exe中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | SLVS_C_PT_FACE_DISTANCE
SLVS_C_PT_ON_FACE
SLVS_C_LENGTH_RATIO
SLVS_C_EQ_LEN_PT_LINE_D
SLVS_C_EQ_PT_LN_DISTANCES
SLVS_C_EQUAL_ANGLE
SLVS_C_EQUAL_LINE_ARC_LEN
SLVS_C_SYMMETRIC
SLVS_C_SYMMETRIC_HORIZ
SLVS_C_SYMMETRIC_VERT
SLVS_C_SYMMETRIC_LINE
SLVS_C_AT_MIDPOINT
SLVS_C_SAME_ORIENTATION
SLVS_C_ANGLE
SLVS_C_PARALLEL
SLVS_C_PERPENDICULAR
SLVS_C_ARC_LINE_TANGENT
SLVS_C_CUBIC_LINE_TANGENT
SLVS_C_PROJ_PT_DISTANCE
SLVS_C_WHERE_DRAGGED
SLVS_C_CURVE_CURVE_TANGENT
|
今天編譯完slvs_python.hpp
,並推送至倉儲python-solvespace。
因為大部分都是強硬約束的關係,只測試過部分功能。
編譯流程
使用Netbeans編譯slvs_python.hpp
和slvs.i
,旁邊的constrainteq.cpp
供參考函式。
slvs.i
class Constraint { Constraint(); public: ... static Constraint some_other_constraint( System* system, int type, Workplane workplane, double value, Point ptA, Point ptB, Entity entityA, Entity entityB, Slvs_hGroup group = USE_DEFAULT_GROUP);
標準的約束條件格式如上,其實所有的約束函式都是透過slvs_python.hpp
輸入constrainteq.cpp
的約束做計算。
slvs_python.hpp
class Constraint { ... public: static Constraint some_other_constraint( System* system, int type, Workplane workplane, double value, Point ptA, Point ptB, Entity entityA, Entity entityB, Slvs_hGroup group = USE_DEFAULT_GROUP) { return init(system, Slvs_MakeConstraint( 0, group, type, workplane.handle(), value, ptA.handle(), ptB.handle(), entityA.handle(), entityB.handle())); } ...
但是由於約束SLVS_C_EQUAL_ANGLE
會用到四個Entity,預設只有開啟2個,另外的EntityC
、EntityD
沒有開啟,而相切約束需要的布林值other
和other2
亦沒有加入。
所以只能從slvs.h
添加這4個值。
其他項目也要加上4個空位,以免出錯。
對照constrainteq.cpp
中需要的項目,在slvs_python.hpp
中填上需要的值的類型,應該就可以運作了。
測試了一些新加入的約束,如果slvs_python.hpp
中填上的類型正確,就會解題,不過「重複約束」的結果似乎是歸類在「過度約束」裡。
而如果本身類型填錯,就會回傳錯誤碼-1
。
但是函式庫中只有SLVS_C_WHERE_DRAGGED
會抓住點(而且還是有移動量),還要研究一下如何鎖住這些點的位置。
今天幫忙編寫CDemo,使其擁有Solvespace全部約束的功能。
會找時間翻修一下之前的紀錄。
Comments
comments powered by Disqus