lisp求面与面的差集_AcGeVector3d是点阵的集合,通过等分点的差集得到。 新的点可以通过点与点阵相差得......
public:
// - ArxProject2.partLine command (do not rename)
static void ArxProject2partLine(void)
{
// Add your code for command ArxProject2.partLine here
ads_name entName;
ads_point pt;
acedEntSel( _T("\n選擇:"),entName,pt);//得到選中的實體
AcDbObjectId ObjId;//得到實體ID
if( acdbGetObjectId(ObjId,entName) != Acad::eOk )//如果沒有選中的實體則返回
{
acutPrintf( _T("\nno"));
return;
}
AcDbEntity* pEnt;//得到實體
if( acdbOpenObject(pEnt,ObjId,AcDb::kForRead) == Acad::eOk)
{
acutPrintf( _T("\nok"));
AcDbLine* pLine = (AcDbLine* )pEnt;//強制轉換
AcGePoint3d ptStart = pLine->startPoint();//得到起點
AcGePoint3d ptEnd = pLine->endPoint();
pEnt->close();
//根據點和線的方向生成點組,繪制線段
int nPart = 5;//五等分
AcGeVector3d Vect = (ptEnd - ptStart)/nPart;//矩陣,點與點的差集平分可得到
for (int n=0; n
{
AcDbObjectId ObjIdNew;
MakeLine(ptStart+n*Vect,ptStart+(n+1)*Vect,ObjIdNew);//等分線段的方法
}
//將選中的線段刪除,
if( acdbOpenObject(pEnt,ObjId,AcDb::kForWrite) == Acad::eOk )
{
pEnt->erase();
pEnt->close();
}
}
}
//將實體添加到數據庫
//cad中的實體最終都要添加到數據庫中才能被顯示(圖紙其實是一個數據庫格式的),所以它的作用就是添加實體到數據庫中
static Acad::ErrorStatus AddToDb(AcDbEntity* ent, AcDbObjectId& objId)
{
Acad::ErrorStatus? ?? ?es;
AcDbBlockTable*? ?? ???pBlockTable;
AcDbBlockTableRecord*??pSpaceRecord;
if ((es = acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlockTable, AcDb::kForRead))
!= Acad::eOk) {
return es;
}
if ((es = pBlockTable->getAt(ACDB_MODEL_SPACE,
pSpaceRecord,
AcDb::kForWrite)) != Acad::eOk) {
return es;
}
if ((es = pBlockTable->close()) != Acad::eOk) {
return es;
}
if ((es = pSpaceRecord->appendAcDbEntity(objId, ent)) != Acad::eOk) {
return es;
}
return pSpaceRecord->close();
}
private://畫線函數
static void MakeLine(AcGePoint3d ptStart,AcGePoint3d ptEnd,AcDbObjectId lineId)
{
AcDbLine *pLine = new AcDbLine(ptStart,ptEnd);
if(AddToDb(pLine,lineId)!=Acad::eOk)//傳入指針,傳出id
AfxMessageBox( _T("加入實體到數據庫失敗!"));
pLine->close();
}
總結
以上是生活随笔為你收集整理的lisp求面与面的差集_AcGeVector3d是点阵的集合,通过等分点的差集得到。 新的点可以通过点与点阵相差得......的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 消费金融是什么意思
- 下一篇: 开金店的利润有多大 高利润其实需要高投入