1. CDemo資料庫內容補正

  2. 倉儲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.hppslvs.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個,另外的EntityCEntityD沒有開啟,而相切約束需要的布林值otherother2亦沒有加入。

所以只能從slvs.h添加這4個值。

其他項目也要加上4個空位,以免出錯。

對照constrainteq.cpp中需要的項目,在slvs_python.hpp中填上需要的值的類型,應該就可以運作了。

測試了一些新加入的約束,如果slvs_python.hpp中填上的類型正確,就會解題,不過「重複約束」的結果似乎是歸類在「過度約束」裡。

而如果本身類型填錯,就會回傳錯誤碼-1

但是函式庫中只有SLVS_C_WHERE_DRAGGED會抓住點(而且還是有移動量),還要研究一下如何鎖住這些點的位置。


今天幫忙編寫CDemo,使其擁有Solvespace全部約束的功能。

會找時間翻修一下之前的紀錄。


Comments

comments powered by Disqus