AcDbHelix Demo

 1 AcDbObjectPointer<AcDbHelix> aHelix;
 2 aHelix.create();
 3 aHelix->setAxisPoint(AcGePoint3d(0, 0, 10));
 4 aHelix->setAxisVector(AcGeVector3d(0, 0, 1));
 5 aHelix->setStartPoint(AcGePoint3d(0, 20, 0));
 6 aHelix->setBaseRadius(20);
 7 aHelix->setTopRadius(10);
 8 aHelix->setTwist(Adesk::kTrue);
 9 
10 // case
11 aHelix->setConstrain(AcDbHelix::kTurnHeight);
12 aHelix->setTurnHeight(15);
13 aHelix->setHeight(100); // Turns = Height / TurnHeight
14 
15 // case
16 aHelix->setConstrain(AcDbHelix::kTurnHeight);
17 aHelix->setTurnHeight(15);
18 aHelix->setTurns(100); // Height = TurnHeight * Turns
19 
20 // case
21 aHelix->setConstrain(AcDbHelix::kTurns);
22 aHelix->setTurns(7);
23 aHelix->setHeight(100); // TurnHeight = Height / Turns
24 
25 aHelix->setConstrain(AcDbHelix::kTurns);
26 aHelix->setTurns(7);
27 aHelix->setTurnHeight(15); // Height = TurnHeight * Turns
28 
29 // case
30 aHelix->setConstrain(AcDbHelix::kHeight);
31 aHelix->setHeight(100);
32 aHelix->setTurns(7); // TurnHeight = Height / Turns
33 
34 // case
35 aHelix->setConstrain(AcDbHelix::kHeight);
36 aHelix->setHeight(100);
37 aHelix->setTurnHeight(15); // Turns = Height / TurnHeight
38 
39 aHelix->createHelix();
40 
41 acutPrintf(_T("StartPoint:%lf,%lf,%lf\n"),
42     aHelix->startPoint()[0], aHelix->startPoint()[1], aHelix->startPoint()[2]); // 0, 20, 10
43 acutPrintf(_T("slope:%lf total length:%lf\n"),
44     aHelix->turnSlope(), aHelix->totalLength());
45 
46 AcDbObjectPointer<AcDbLine> xAxis;
47 AcDbObjectPointer<AcDbLine> yAxis;
48 AcDbObjectPointer<AcDbLine> zAxis;
49 xAxis.create();
50 yAxis.create();
51 zAxis.create();
52 AcCmColor color;
53 color.setRGB(255, 0, 0);
54 xAxis->setColor(color);
55 color.setRGB(0, 255, 0);
56 yAxis->setColor(color);
57 color.setRGB(0, 0, 255);
58 zAxis->setColor(color);
59 xAxis->setStartPoint(AcGePoint3d::kOrigin + AcGeVector3d(0, 0, 10));
60 yAxis->setStartPoint(AcGePoint3d::kOrigin + AcGeVector3d(0, 0, 10));
61 zAxis->setStartPoint(AcGePoint3d::kOrigin + AcGeVector3d(0, 0, 10));
62 xAxis->setEndPoint(xAxis->startPoint() + AcGeVector3d(20, 0, 0));
63 yAxis->setEndPoint(yAxis->startPoint() + AcGeVector3d(0, 20, 0));
64 zAxis->setEndPoint(zAxis->startPoint() + AcGeVector3d(0, 0, 100));

 

posted @ 2015-08-29 15:37  Yself  阅读(284)  评论(0编辑  收藏  举报