青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer's Cookbook

{C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

很好的arx學習代碼(.net版)

using ?System?;
using ?Autodesk.AutoCAD.Runtime?;
using ?Autodesk.AutoCAD.ApplicationServices;
using ?Autodesk.AutoCAD.DatabaseServices;
using ?Autodesk.AutoCAD.Geometry;
using ?Autodesk.AutoCAD.Colors;
using ?Autodesk.AutoCAD.EditorInput;

[assembly:?CommandClass(
typeof (ClassLibrary.Class))]

namespace ?ClassLibrary
{
????
/// ? <summary>
????
/// ?Summary?description?for?Class.
????
/// ? </summary>

???? public ? class ?Class
????
{
????????
public ?Class()
????????
{
????????????
//
????????????
// ?TODO:?Add?constructor?logic?here
????????????
//
????????}

????????
// This?function?returns?the?ObjectId?for?the?BlockTableRecord?called?"EmployeeBlock",
????????
// creating?it?if?necessary.??The?block?contains?three?entities?-?circle,?text?
????????
// and?ellipse.
???????? public ?ObjectId?CreateEmployeeDefinition()?
????????
{?
????????????ObjectId?newBtrId?
= ? new ?ObjectId();? // The?return?value?for?this?function
????????????Database?db? = ?HostApplicationServices.WorkingDatabase;? // save?some?space
????????????Transaction?trans? = ?db.TransactionManager.StartTransaction();? // begin?the?transaction
????????????Editor?ed? = ?Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;?
????????????
????????????
try ?
????????????
{?
????????????????
// Now,?drill?into?the?database?and?obtain?a?reference?to?the?BlockTable
????????????????BlockTable?bt? = ?(BlockTable)trans.GetObject(db.BlockTableId,?OpenMode.ForWrite);?
????????????????
if ?((bt.Has( " EmployeeBlock " )))?
????????????????
{?
????????????????????newBtrId?
= bt[ " EmployeeBlock " ];
????????????????}
?
????????????????
else ?
????????????????
{?
????????????????????Point3d?center?
= ? new ?Point3d( 10 ,? 10 ,? 0 );? // ?convenient?declaration
????????????????????
// ??Declare?and?define?the?entities?we?want?to?add:
????????????????????
// Circle:
????????????????????Circle?circle? = ? new ?Circle(center,?Vector3d.ZAxis,? 2 );?
????????????????????
// Text:
????????????????????
// MText?text?=?new?MText();?
????????????????????
// text.Contents?=?"Earnest?Shackleton";?
????????????????????
// text.Location?=?center;?
????????????????
????????????????????
// Attribute?Definition
????????????????????AttributeDefinition?text? = ? new ?AttributeDefinition(center,? " NoName " ,? " Name: " ,? " Enter?Name " ,?db.Textstyle);
????????????????????text.ColorIndex?
= ? 2 ;

????????????????????
// Ellipse:
????????????????????Ellipse?ellipse? = ? new ?Ellipse(center,?Vector3d.ZAxis,? new ?Vector3d( 3 ,? 0 ,? 0 ),? 0.5 ,? 0 ,? 0 );?

????????????????????
// Next,?create?a?layer?with?the?helper?function,?and?assign
????????????????????
// the?layer?to?our?entities.
????????????????????ObjectId?empId? = ?CreateLayer();?
????????????????????text.LayerId?
= ?empId;?
????????????????????circle.LayerId?
= ?empId;?
????????????????????ellipse.LayerId?
= ?empId;?
????????????????????
// Set?the?color?for?each?entity?irrespective?of?the?layer's?color.
????????????????????text.ColorIndex? = ? 2 ;?
????????????????????circle.ColorIndex?
= ? 1 ;?
????????????????????ellipse.ColorIndex?
= ? 3 ;?

????????????????????
// Create?a?new?block?definition?called?EmployeeBlock
????????????????????BlockTableRecord?newBtr? = ? new ?BlockTableRecord();?
????????????????????newBtr.Name?
= ? " EmployeeBlock " ;?
????????????????????newBtrId?
= ?bt.Add(newBtr);? // Add?the?block,?and?set?the?id?as?the?return?value?of?our?function
????????????????????trans.AddNewlyCreatedDBObject(newBtr,? true );? // Let?the?transaction?know?about?any?object/entity?you?add?to?the?database!
????????????????????
????????????????????newBtr.AppendEntity(circle);?
// Append?our?entities
????????????????????newBtr.AppendEntity(text);?
????????????????????newBtr.AppendEntity(ellipse);?
????????????????????trans.AddNewlyCreatedDBObject(circle,?
true );? // Again,?let?the?transaction?know?about?our?newly?added?entities.
????????????????????trans.AddNewlyCreatedDBObject(text,? true );?
????????????????????trans.AddNewlyCreatedDBObject(ellipse,?
true );?
????????????????????????????????????????
????????????????}
?
????????????????trans.Commit();?
// All?done,?no?errors???Go?ahead?and?commit!
????????????}
?
????????????
catch ?
????????????
{?????????????????
????????????????ed.WriteMessage(
" Error?Creating?Employee?Block " );
????????????}
?
????????????
finally ?
????????????
{?
????????????????trans.Dispose();?
????????????}
?
????????????
// CreateDivision();? // Create?the?Employee?Division?dictionaries.
???????????? return ?newBtrId;?
????????}

????????

????????
// This?function?creates?a?new?BlockReference?to?the?"EmployeeBlock"?object,
????????
// and?adds?it?to?ModelSpace.
???????? public ?ObjectId?CreateEmployee( string ?name,? string ?division,? double ?salary,?Point3d?pos)?
????????
{?
????????????Database?db?
= ?HostApplicationServices.WorkingDatabase;?
????????????Transaction?trans?
= ?db.TransactionManager.StartTransaction();?
????????????
try ?
????????????
{?

????????????????BlockTable?bt?
= ?(BlockTable)(trans.GetObject(db.BlockTableId,?OpenMode.ForWrite));?
????????????????BlockTableRecord?btr?
= (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace],?OpenMode.ForWrite);
????????????????
// Create?the?block?referenceuse?the?return?from?CreateEmployeeDefinition?directly!
????????????????BlockReference?br? = ? new ?BlockReference(pos,?CreateEmployeeDefinition());?
????????
// ????????btr.AppendEntity(br);? // Add?the?reference?to?ModelSpace
????????
// ????????trans.AddNewlyCreatedDBObject(br,?true);? // Let?the?transaction?know?about?it

????????????????AttributeReference?attRef?
= ? new ?AttributeReference();?
????????????????
// Iterate?the?employee?block?and?find?the?attribute?definition
????????????????BlockTableRecord?empBtr? = ?(BlockTableRecord)trans.GetObject(bt[ " EmployeeBlock " ],?OpenMode.ForRead);?
????????????????
foreach ?(ObjectId?id? in ?empBtr)?
????????????????
{?
????????????????????Entity?ent?
= ?(Entity)trans.GetObject(id,?OpenMode.ForRead,? false );?
????????????????????
// Use?it?to?open?the?current?object!?
???????????????????? if ?(ent? is ?AttributeDefinition)?? // We?use?.NET's?RTTI?to?establish?type.
???????????????????? {?
????????????????????????
// Set?the?properties?from?the?attribute?definition?on?our?attribute?reference
????????????????????????AttributeDefinition?attDef? = ?((AttributeDefinition)(ent));?
????????????????????????attRef.SetPropertiesFrom(attDef);?
????????????????????????attRef.Position?
= ? new ?Point3d(attDef.Position.X? + ?br.Position.X,?attDef.Position.Y? + ?br.Position.Y,?attDef.Position.Z? + ?br.Position.Z);?
????????????????????????attRef.Height?
= ?attDef.Height;?
????????????????????????attRef.Rotation?
= ?attDef.Rotation;?
????????????????????????attRef.Tag?
= ?attDef.Tag;?
????????????????????????attRef.TextString?
= ?name;?
????????????????????}
?
????????????????}
?
????????????????
// Add?the?reference?to?ModelSpace
????????????????btr.AppendEntity(br);?
????????????????
// Add?the?attribute?reference?to?the?block?reference
????????????????br.AttributeCollection.AppendAttribute(attRef);?
????????????????
// let?the?transaction?know
????????????????trans.AddNewlyCreatedDBObject(attRef,? true );?
????????????????trans.AddNewlyCreatedDBObject(br,?
true );

????????????????
// Create?the?custom?per-employee?data
????????????????Xrecord?xRec? = ?? new ?Xrecord();
????????????????
// We?want?to?add?'Name',?'Salary'?and?'Division'?information.??Here?is?how:
????????????????xRec.Data? = ? new ?ResultBuffer(?
????????????????????
new ?TypedValue(( int )DxfCode.Text,?name),?
????????????????????
new ?TypedValue(( int )DxfCode.Real,?salary),?
????????????????????
new ?TypedValue(( int )DxfCode.Text,?division));

????????????????
// Next,?we?need?to?add?this?data?to?the?'Extension?Dictionary'?of?the?employee.
????????????????br.CreateExtensionDictionary();
????????????????DBDictionary?brExtDict??
= ?(DBDictionary)trans.GetObject(br.ExtensionDictionary,?OpenMode.ForWrite,? false );
????????????????brExtDict.SetAt(
" EmployeeData " ,?xRec);? // Set?our?XRecord?in?the?dictionary?at?'EmployeeData'.
????????????????trans.AddNewlyCreatedDBObject(xRec,? true );

????????????????trans.Commit();?
????????????????
return ?br.ObjectId;
????????????}
?
????????????
finally ?
????????????
{?
????????????????trans.Dispose();?
????????????}
?
????????}

?????????
????????
// This?function?returns?the?objectId?for?the?"EmployeeLayer",?creating?it?if?necessary.
???????? public ?ObjectId?CreateLayer()?
????????
{?
????????????ObjectId?layerId;?
????????????Database?db?
= ?HostApplicationServices.WorkingDatabase;?
????????????Transaction?trans?
= ?db.TransactionManager.StartTransaction();?
????????????
// Get?the?layer?table?first
????????????LayerTable?lt? = ?(LayerTable)trans.GetObject(db.LayerTableId,?OpenMode.ForWrite);?
????????????
// Check?if?EmployeeLayer?exists
????????????
????????????
if ?(lt.Has( " EmployeeLayer " ))?
????????????
{?
????????????????layerId?
= ?lt[ " EmployeeLayer " ];
????????????}
?
????????????
else ?
????????????
{?
????????????????
// If?not,?create?the?layer?here.
????????????????LayerTableRecord?ltr? = ? new ?LayerTableRecord();?
????????????????ltr.Name?
= ? " EmployeeLayer " ;? // ?Set?the?layer?name
????????????????ltr.Color? = ?Color.FromColorIndex(ColorMethod.ByAci,? 2 );?
????????????????layerId?
= ?lt.Add(ltr);?
????????????????trans.AddNewlyCreatedDBObject(ltr,?
true );?
????????????}
?
????????????trans.Commit();?
????????????trans.Dispose();?
????????????
return ?layerId;?
????????}


????????
public ?ObjectId?CreateDivision( string ?division,? string ?manager)
????????
{
????????????Database?db?
= ?HostApplicationServices.WorkingDatabase;
????????????Transaction?trans?
= ?db.TransactionManager.StartTransaction();?

????????????
try
????????????
{
????????????????
// First,?get?the?NOD
????????????????DBDictionary?NOD? = ?(DBDictionary)trans.GetObject(db.NamedObjectsDictionaryId,?OpenMode.ForWrite);
????????????????
// Define?a?corporate?level?dictionary
????????????????DBDictionary?acmeDict;
????????????????
try
????????????????
{
????????????????????
// Just?throw?if?it?doesn't?existdo?nothing?else
????????????????????acmeDict? = ?(DBDictionary)trans.GetObject(NOD.GetAt( " ACME_DIVISION " ),?OpenMode.ForRead);
????????????????}

????????????????
catch
????????????????
{
????????????????????
// Doesn't?exist,?so?create?one,?and?set?it?in?the?NOD?
????????????????????acmeDict? = ? new ?DBDictionary();
????????????????????NOD.SetAt(
" ACME_DIVISION " ,?acmeDict);
????????????????????trans.AddNewlyCreatedDBObject(acmeDict,?
true );
????????????????}


????????????????
// Now?get?the?division?we?want?from?acmeDict
????????????????DBDictionary?divDict;
????????????????
try
????????????????
{
????????????????????divDict?
= ?(DBDictionary)trans.GetObject(acmeDict.GetAt(division),?OpenMode.ForWrite);
????????????????}

????????????????
catch
????????????????
{
????????????????????divDict?
= ? new ?DBDictionary();
????????????????????
// Division?doesn't?exist,?create?one
????????????????????acmeDict.UpgradeOpen();
????????????????????acmeDict.SetAt(division,?divDict);
????????????????????trans.AddNewlyCreatedDBObject(divDict,?
true );
????????????????}


????????????????
// Now?get?the?manager?info?from?the?division
????????????????
// We?need?to?add?the?name?of?the?division?supervisor.??We'll?do?this?with?another?XRecord.
????????????????Xrecord?mgrXRec;
????????????????
try
????????????????
{
????????????????????mgrXRec?
= ?(Xrecord)trans.GetObject(divDict.GetAt( " Department?Manager " ),?OpenMode.ForWrite);
????????????????}

????????????????
catch
????????????????
{
????????????????????mgrXRec?
= ? new ?Xrecord();
????????????????????mgrXRec.Data?
= ? new ?ResultBuffer( new ?TypedValue(( int )DxfCode.Text,?manager));
????????????????????divDict.SetAt(
" Department?Manager " ,?mgrXRec);
????????????????????trans.AddNewlyCreatedDBObject(mgrXRec,?
true );
????????????????}


????????????????trans.Commit();
????????????????
// Return?the?department?manager?XRecord
???????????????? return ?mgrXRec.ObjectId;

????????????}

????????????
finally
????????????
{
????????????????trans.Dispose();
????????????}

????????}


????????[CommandMethod(
" EMPLOYEECOUNT " )]
????????
public ? void ?EmployeeCount()
????????
{
????????????Database?db?
= ?HostApplicationServices.WorkingDatabase;
????????????Transaction?trans?
= ?db.TransactionManager.StartTransaction();?? // Start?the?transaction.
???????????? int ?nEmployeeCount?? = ? 0 ;
????????????
try
????????????
{
????????????????
// First,?get?at?the?BlockTable,?and?the?ModelSpace?BlockTableRecord
????????????????BlockTable?bt? = ?(BlockTable)trans.GetObject(db.BlockTableId,?OpenMode.ForRead);
????????????????BlockTableRecord?btr?
= ?(BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace],?OpenMode.ForRead);
????????????????
// Now,?we?need?to?be?able?to?print?to?the?commandline.??Here?is?an?object?which?will?help?us:
????????????????Editor?ed? = ?Application.DocumentManager.MdiActiveDocument.Editor;

????????????????
// Now,?here?is?the?fun?part.??This?is?where?we?iterate?through?ModelSpace:
???????????????? foreach ?(ObjectId?id? in ?btr)
????????????????
{
????????????????????Entity?ent?
= ?(Entity)trans.GetObject(id,?OpenMode.ForRead,? false );?? // Use?it?to?open?the?current?object!
???????????????????? if ?(ent.GetType()? == ? typeof (BlockReference))? // We?use?.NET's?RTTI?to?establish?type.
???????????????????? {
????????????????????????nEmployeeCount?
+= ? 1 ;
????????????????????}

????????????????}


????????????????ed.WriteMessage(
" Employees?Found:? " ? + ?nEmployeeCount.ToString());
????????????????trans.Commit();
????????????}

????????????
finally
????????????
{
????????????????trans.Dispose();
????????????}

????????}


????????
// We?want?a?command?which?will?go?through?and?list?all?the?relevant?employee?data.
???????? public ? static ? void ?ListEmployee(ObjectId?employeeId,? ref ? string []?saEmployeeList)?
????????
{?
????????????
int ?nEmployeeDataCount? = ? 0 ;?
????????????Database?db?
= ?HostApplicationServices.WorkingDatabase;?
????????????Transaction?trans?
= ?db.TransactionManager.StartTransaction();? // Start?the?transaction
???????????? try ?
????????????
{?
????????????????Entity?ent?
= ?(Entity)trans.GetObject(employeeId,?OpenMode.ForRead,? false );? // Use?it?to?open?the?current?object!
???????????????? if ?(ent.GetType()? == ? typeof (BlockReference))? // We?use?.NET's?RTTI?to?establish?type.
???????????????? {?
????????????????????
// Not?all?BlockReferences?will?have?our?employee?data,?so?we?must?make?sure?we?can?handle?failure
???????????????????? bool ?bHasOurDict? = ? true ;?
????????????????????Xrecord?EmployeeXRec?
= ? null ;?
????????????????????
try ?
????????????????????
{?
????????????????????????BlockReference?br?
= ?(BlockReference)ent;?
????????????????????????DBDictionary?extDict?
= ?(DBDictionary)trans.GetObject(br.ExtensionDictionary,?OpenMode.ForRead,? false );?
????????????????????????EmployeeXRec?
= ?(Xrecord)trans.GetObject(extDict.GetAt( " EmployeeData " ),?OpenMode.ForRead,? false );?
????????????????????}
?
????????????????????
catch ?
????????????????????
{?
????????????????????????bHasOurDict?
= ? false ;? // Something?bad?happenedour?dictionary?and/or?XRecord?is?not?accessible
????????????????????}
?

????????????????????
if ?(bHasOurDict)? // If?obtaining?the?Extension?Dictionary,?and?our?XRecord?is?successful
???????????????????? {?

????????????????????????
// ?allocate?memory?for?the?list
????????????????????????saEmployeeList? = ? new ?String[ 4 ];

????????????????????????TypedValue?resBuf?
= ?EmployeeXRec.Data.AsArray()[ 0 ];?
????????????????????????saEmployeeList.SetValue(
string .Format( " {0}\n " ,?resBuf.Value),?nEmployeeDataCount);?
????????????????????????nEmployeeDataCount?
+= ? 1 ;?
????????????????????????resBuf?
= ?EmployeeXRec.Data.AsArray()[ 1 ];?
????????????????????????saEmployeeList.SetValue(
string .Format( " {0}\n " ,?resBuf.Value),?nEmployeeDataCount);?
????????????????????????nEmployeeDataCount?
+= ? 1 ;?
????????????????????????resBuf?
= ?EmployeeXRec.Data.AsArray()[ 2 ];?
????????????????????????
string ?str? = ?( string )resBuf.Value;?
????????????????????????saEmployeeList.SetValue(
string .Format( " {0}\n " ,?resBuf.Value),?nEmployeeDataCount);?
????????????????????????nEmployeeDataCount?
+= ? 1 ;?
????????????????????????DBDictionary?NOD?
= ?(DBDictionary)trans.GetObject(db.NamedObjectsDictionaryId,?OpenMode.ForRead,? false );?
????????????????????????DBDictionary?acmeDict?
= ?(DBDictionary)trans.GetObject(NOD.GetAt( " ACME_DIVISION " ),?OpenMode.ForRead);?
????????????????????????DBDictionary?salesDict?
= ?(DBDictionary)trans.GetObject(acmeDict.GetAt(( string )EmployeeXRec.Data.AsArray()[ 2 ].Value),?OpenMode.ForRead);?
????????????????????????Xrecord?salesXRec?
= ?(Xrecord)trans.GetObject(salesDict.GetAt( " Department?Manager " ),?OpenMode.ForRead);?
????????????????????????resBuf?
= ?salesXRec.Data.AsArray()[ 0 ];?
????????????????????????saEmployeeList.SetValue(
string .Format( " {0}\n " ,?resBuf.Value),?nEmployeeDataCount);?
????????????????????????nEmployeeDataCount?
+= ? 1 ;?
????????????????????}
?
????????????????}
?
????????????????trans.Commit();?
????????????}
?
????????????
finally ?
????????????
{?
????????????????trans.Dispose();?
????????????}
?
????????}
?

????
????????[CommandMethod(
" PRINTOUTEMPLOYEE " )]?
????????
public ? static ?? void ?PrintoutEmployee()?
????????
{?
????????????Editor?ed?
= ?Application.DocumentManager.MdiActiveDocument.Editor;?
????????????Database?db?
= ?HostApplicationServices.WorkingDatabase;?
????????????Transaction?trans?
= ?db.TransactionManager.StartTransaction();?
????????????
try ?
????????????
{?
????????????????BlockTable?bt?
= ?(BlockTable)trans.GetObject(HostApplicationServices.WorkingDatabase.BlockTableId,?OpenMode.ForRead);?
????????????????BlockTableRecord?btr?
= ?(BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace],?OpenMode.ForRead);?
????????????????
foreach ?(ObjectId?id? in ?btr)?
????????????????
{?
????????????????????Entity?ent?
= ?(Entity)trans.GetObject(id,?OpenMode.ForRead,? false );?
????????????????????
if ?(ent? is ?BlockReference)?
????????????????????
{?
????????????????????????
string []?saEmployeeList? = ? null ;
????????????????
????????????????????????ListEmployee(id,?
ref ?saEmployeeList);?
????????????????????????
if ?((saEmployeeList.Length? == ? 4 ))?
????????????????????????
{?
????????????????????????????ed.WriteMessage(
" Employee?Name:?{0} " ,?saEmployeeList[ 0 ]);?
????????????????????????????ed.WriteMessage(
" Employee?Salary:?{0} " ,?saEmployeeList[ 1 ]);?
????????????????????????????ed.WriteMessage(
" Employee?Division:?{0} " ,?saEmployeeList[ 2 ]);?
????????????????????????????ed.WriteMessage(
" Division?Manager:?{0} " ,?saEmployeeList[ 3 ]);?
????????????????????????}
?
????????????????????}
?
????????????????}
?
????????????}
?
????????????
finally ?
????????????
{?
????????????}
?????
????????}


????????[CommandMethod(
" CREATE " )]?
????????
public ? void ?CreateEmployee()?
????????
{?
????????????Database?db?
= ?HostApplicationServices.WorkingDatabase;?
????????????Editor?ed?
= ?Application.DocumentManager.MdiActiveDocument.Editor;?
????????????Transaction?trans?
= ?db.TransactionManager.StartTransaction();?
????????????
try ?
????????????
{?
????????????????
string ?empName? = ?? " Earnest?Shackleton " ;
????????????????
string ?divName? = ?? " Sales " ;?
????????????????
double ?salary? = ? new ? double ();?
????????????????salary?
= ? 10000 ;?
????????????????Point3d?position?
= ? new ?Point3d( 0 ,? 0 ,? 0 );?
????????????????
bool ?gotPosition? = ? new ? bool ();?
????????????????
// boolean?to?check?if?a?point?has?been?entered
????????????????gotPosition? = ? false ;

????????????????
// Prompts?for?each?employee?detail
????????????????PromptStringOptions?prName? = ? new ?PromptStringOptions( " Enter?Employee?Name?< " ? + ?empName? + ? " > " );?
????????????????PromptStringOptions?prDiv?
= ? new ?PromptStringOptions( " Enter?Employee?Division?< " ? + ?divName? + ? " > " );?
????????????????PromptDoubleOptions?prSal?
= ? new ?PromptDoubleOptions( " Enter?Employee?Salary?< " ? + ?salary? + ? " > " );?
????????????????PromptPointOptions?prPos?
= ? new ?PromptPointOptions( " Enter?Employee?Position?or " );

????????????????
// Add?keywords?when?prompting?for?position
????????????????prPos.Keywords.Add( " Name " );?
????????????????prPos.Keywords.Add(
" Division " );?
????????????????prPos.Keywords.Add(
" Salary " );?
????????????????
// Set?conditions?for?prompting
????????????????prPos.AllowNone? = ? false ;? // Do?not?allow?null?values

????????????????
// prompt?results
????????????????PromptResult?prNameRes;?
????????????????PromptResult?prDivRes;?
????????????????PromptDoubleResult?prSalRes;?
????????????????PromptPointResult?prPosRes;

????????????????
// Loop?to?get?employee?details.?Exit?the?loop?when?positon?is?entered
???????????????? while ?( ! gotPosition)?
????????????????
{?
????????????????????
// Prompt?for?position
????????????????????prPosRes? = ?ed.GetPoint(prPos);?
????????????????????
// Got?a?point
???????????????????? if ?(prPosRes.Status? == ?PromptStatus.OK)?
????????????????????
{?
????????????????????????gotPosition?
= ? true ;?
????????????????????????position?
= ?prPosRes.Value;?
????????????????????}
?
????????????????????
else ? if ?(prPosRes.Status? == ?PromptStatus.Keyword)? // Got?a?keyword
???????????????????? {?
????????????????????????
// Name?keyword?entered
???????????????????????? if ?(prPosRes.StringResult? == ? " Name " )?
????????????????????????
{?
????????????????????????????
// Get?employee?name
????????????????????????????prName.AllowSpaces? = ? true ;?
????????????????????????????prNameRes?
= ?ed.GetString(prName);?
????????????????????????????
if ?(prNameRes.Status? != ?PromptStatus.OK)?
????????????????????????????
{?
????????????????????????????????
return ;?
????????????????????????????}
?
????????????????????????????
// we?got?the?employee?name?successfully
???????????????????????????? if ?(prNameRes.StringResult? != ? "" )?
????????????????????????????
{?
????????????????????????????????empName?
= ?prNameRes.StringResult;?
????????????????????????????}
?
????????????????????????}

?
????????????????????????
// Division?keyword?entered
???????????????????????? if ?(prPosRes.StringResult? == ? " Division " )?
????????????????????????
{?

????????????????????????????
// Get?employee?division
????????????????????????????prDiv.AllowSpaces? = ? true ;?
????????????????????????????prDivRes?
= ?ed.GetString(prDiv);?
????????????????????????????
if ?(prDivRes.Status? != ?PromptStatus.OK)?
????????????????????????????
{?
????????????????????????????????
return ;?
????????????????????????????}
?
????????????????????????????
if ?(prDivRes.StringResult? != ? "" )?
????????????????????????????
{?
????????????????????????????????divName?
= ?prDivRes.StringResult;?
????????????????????????????}
?
????????????????????????}
? // ?Division

????????????????????????
// ?Salary?keyword?entered
???????????????????????? if ?(prPosRes.StringResult? == ? " Salary " )?
????????????????????????
{?
????????????????????????????
// Get?employee?salary
????????????????????????????prSal.AllowNegative? = ? false ;?
????????????????????????????prSal.AllowNone?
= ? true ;?
????????????????????????????prSal.AllowZero?
= ? false ;?
????????????????????????????prSalRes?
= ?ed.GetDouble(prSal);?
????????????????????????????
if ?(prSalRes.Status? != ?PromptStatus.OK? & ?prSalRes.Status? != ?PromptStatus.None)?
????????????????????????????
{?
????????????????????????????????
return ;?
????????????????????????????}
?
????????????????????????????
if ?(prSalRes.Status? != ?PromptStatus.None)?
????????????????????????????
{?
????????????????????????????????salary?
= ?prSalRes.Value;?
????????????????????????????}
?
????????????????????????}
? // ?Salary
????????????????????}
?
????????????????????
else ?
????????????????????
{?
????????????????????????
// ?Error?in?getting?a?point
????????????????????????ed.WriteMessage( " ***Error?in?getting?a?point,?exiting!!*** " ? + ? " \r\n " );?
????????????????????????
return ;?
????????????????????}
?? // ?If?got?a?point
????????????????}


????????????????
// Create?the?Employee
????????????????CreateEmployee(empName,?divName,?salary,?position);

????????????????
string ?manager? = ? "" ;
????????????????
// Now?create?the?division?
????????????????
// Pass?an?empty?string?for?manager?to?check?if?it?already?exists
????????????????Xrecord?depMgrXRec;?
????????????????ObjectId?xRecId;?
????????????????xRecId?
= ?CreateDivision(divName,?manager);?
????????????????
// Open?the?department?manager?XRecord
????????????????depMgrXRec? = ?(Xrecord)trans.GetObject(xRecId,?OpenMode.ForRead);?
????????????????TypedValue[]?typedVal?
= ?depMgrXRec.Data.AsArray();
????????????????
foreach ?(TypedValue?val? in ?typedVal)?
????????????????
{?
????????????????????
string ?str;?
????????????????????str?
= ?( string )val.Value;?
????????????????????
if ?(str? == ? "" )?
????????????????????
{?
????????????????????????
// Manager?was?not?set,?now?set?it
????????????????????????
// ?Prompt?for??manager?name?first
????????????????????????ed.WriteMessage( " \r\n " );?
????????????????????????PromptStringOptions?prManagerName?
= ? new ?PromptStringOptions( " No?manager?set?for?the?division!?Enter?Manager?Name " );?
????????????????????????prManagerName.AllowSpaces?
= ? true ;?
????????????????????????PromptResult?prManagerNameRes?
= ?ed.GetString(prManagerName);?
????????????????????????
if ?(prManagerNameRes.Status? != ?PromptStatus.OK)?
????????????????????????
{?
????????????????????????????
return ;?
????????????????????????}
?
????????????????????????
// Set?a?manager?name
????????????????????????depMgrXRec.Data? = ? new ?ResultBuffer( new ?TypedValue(( int )DxfCode.Text,?prManagerNameRes.StringResult));?
????????????????????}
?
????????????????}


????????????????trans.Commit();?
????????????}
?
????????????
finally ?
????????????
{?
????????????????trans.Dispose();?
????????????}
?
????????}


????????[CommandMethod(
" LISTEMPLOYEES " )]?
????????
public ? void ?List()?
????????
{?
????????????Editor?ed?
= ?Application.DocumentManager.MdiActiveDocument.Editor;?
????????????
try ?
????????????
{?
????????????????PromptSelectionOptions?Opts?
= ? new ?PromptSelectionOptions();?
????????????????TypedValue[]?filList?
= ? new ?TypedValue[ 1 ];
?????????????????
// Build?a?filter?list?so?that?only?block?references?are?selected
????????????????filList[ 0 ]? = ? new ?TypedValue(( int )DxfCode.Start,? " INSERT " );?
????????????????SelectionFilter?filter?
= ? new ?SelectionFilter(filList);?
????????????????PromptSelectionResult?res?
= ?ed.GetSelection(Opts,?filter);?
????????????????
// Do?nothing?if?selection?is?unsuccessful
???????????????? if ?(res.Status? != ?PromptStatus.OK)?
????????????????????????
return ;?
????????????????Autodesk.AutoCAD.EditorInput.SelectionSet?SS?
= ?res.Value;?
????????????????ObjectId[]?idArray;
????????????????idArray?
= ?SS.GetObjectIds();?
????????????????
string []?saEmployeeList? = ? new ? string [ 4 ];?
????????????????
// collect?all?employee?details?in?saEmployeeList?array
???????????????? foreach ?(ObjectId?employeeId? in ?idArray)?
????????????????
{?
????????????????????ListEmployee(employeeId,?
ref ?saEmployeeList);?
????????????????????
// Print?employee?details?to?the?command?line
???????????????????? foreach ?( string ?employeeDetail? in ?saEmployeeList)?
????????????????????
{?
????????????????????????ed.WriteMessage(employeeDetail);?
????????????????????}
?
????????????????????
// separator
????????????????????ed.WriteMessage( " ---------------------- " ? + ? " \r\n " );?
????????????????}
?
????????????}
??
????????????
finally ?
????????????
{?
????????????}
?
????????}


????????[CommandMethod(
" Test " )]
????????
public ?? void ?Test()
????????
{
????????????CreateDivision(
" Sales " ,? " Randolph?P.?Brokwell " );
????????}

????}

}

posted on 2006-06-26 17:10 夢在天涯 閱讀(2143) 評論(1)  編輯 收藏 引用 所屬分類: ARX/DBX

評論

# re: 很好的arx學習代碼(.net版)[未登錄] 2009-06-24 01:51 kevin

iamwlb@qq.com
不知道為什么我的程序執行到database db的時候就異常了,不知道是不是不能脫離autocad運行?  回復  更多評論   

公告

EMail:itech001#126.com

導航

統計

  • 隨筆 - 461
  • 文章 - 4
  • 評論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1812168
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              久久午夜精品一区二区| 亚洲精品日韩综合观看成人91| 99视频一区二区| 欧美日韩国产在线观看| 一本一本久久a久久精品综合麻豆| 欧美成人a∨高清免费观看| 久久一区国产| 老司机成人网| 在线观看日韩一区| 亚洲激情欧美| 亚洲日本理论电影| 欧美日韩国产成人在线| 中文在线资源观看网站视频免费不卡| 一区二区激情视频| 国产偷国产偷精品高清尤物| 久久综合狠狠| 欧美国产精品va在线观看| 在线综合+亚洲+欧美中文字幕| 宅男噜噜噜66一区二区| 国外成人免费视频| 亚洲欧洲在线免费| 国产精品区一区二区三区| 久久亚洲精品一区二区| 欧美大片18| 久久国产精品亚洲77777| 久久夜色撩人精品| 先锋影音国产精品| 欧美va亚洲va国产综合| 亚洲欧美日韩综合国产aⅴ| 久久国产日韩| 亚洲在线观看免费| 久久免费的精品国产v∧| 亚洲一区二区三区四区中文| 欧美一区二区三区精品 | 亚洲男同1069视频| 亚洲国产一区视频| 亚洲免费视频观看| 日韩天堂在线观看| 久久精品首页| 午夜久久福利| 欧美日韩免费一区二区三区| 久久久欧美一区二区| 欧美色区777第一页| 女生裸体视频一区二区三区| 欧美丝袜一区二区| 欧美激情国产高清| 在线播放精品| 欧美一区二区三区视频免费播放| 一本大道av伊人久久综合| 久久亚洲欧洲| 久久天堂成人| 国产一区二区三区免费在线观看 | 亚洲系列中文字幕| 欧美成人小视频| 免费一级欧美片在线播放| 国产一在线精品一区在线观看| 中文成人激情娱乐网| 一区二区三区视频在线看| 久久一区二区三区四区五区| 麻豆精品91| 国内欧美视频一区二区| 午夜精品成人在线视频| 亚洲婷婷综合色高清在线| 欧美日韩情趣电影| 日韩午夜在线| 欧美在线视频免费观看| 欧美专区一区二区三区| 久久99伊人| 国产日韩欧美综合一区| 亚洲女同精品视频| 欧美中文字幕第一页| 国产一区二区三区免费不卡| 欧美在线看片| 蘑菇福利视频一区播放| 亚洲国产中文字幕在线观看| 美女在线一区二区| 91久久精品www人人做人人爽| 亚洲人体1000| 欧美日韩综合另类| 亚洲欧美日本另类| 久久久免费精品| 亚洲激情影视| 欧美视频二区36p| 午夜一区二区三区在线观看| 久久久精品国产免大香伊| 黄色影院成人| 欧美成人日本| 亚洲免费在线观看| 久久―日本道色综合久久| 亚洲高清电影| 欧美日韩精品久久久| 亚洲欧美一区二区三区极速播放| 久久久久久久网| 亚洲精品国久久99热| 国产精品二区影院| 久久精品72免费观看| 亚洲成色www久久网站| 亚洲一区日韩在线| 黄色亚洲免费| 国产精品啊啊啊| 久久久久久久久伊人| 亚洲精品久久久久久久久久久久| 亚洲欧美日韩精品在线| 精品动漫av| 欧美午夜片在线观看| 久久精品午夜| 亚洲视频久久| 亚洲国产精品va在线观看黑人| 亚洲一区二区三区在线观看视频 | 激情一区二区三区| 国产精品激情电影| 欧美国产精品一区| 欧美中文字幕| 亚洲天堂av图片| 亚洲国产精品一区二区三区| 欧美在线短视频| 一区二区三区av| 亚洲福利视频二区| 国产片一区二区| 欧美午夜激情在线| 欧美成人免费观看| 久久久久久久波多野高潮日日| 一区二区三区高清视频在线观看| 蘑菇福利视频一区播放| 久久精品免视看| 亚洲欧美国产毛片在线| 日韩视频中午一区| 亚洲国产女人aaa毛片在线| 国产日韩在线一区二区三区| 欧美午夜www高清视频| 麻豆精品一区二区av白丝在线| 午夜综合激情| 亚洲在线播放电影| 一区二区av在线| 亚洲国产另类久久久精品极度| 久久免费视频在线| 欧美亚洲一区二区在线观看| 久久视频在线免费观看| 亚洲网站在线| 亚洲性感美女99在线| 99精品视频一区二区三区| 亚洲国产天堂久久综合| 欧美第一黄网免费网站| 牛夜精品久久久久久久99黑人| 久久久福利视频| 久久久xxx| 米奇777超碰欧美日韩亚洲| 久久亚洲影音av资源网| 久久综合网络一区二区| 另类春色校园亚洲| 久久亚洲欧美| 欧美刺激午夜性久久久久久久| 美日韩精品免费观看视频| 免费在线欧美视频| 亚洲高清不卡| 99re6热在线精品视频播放速度| 亚洲精品欧美激情| 一本大道av伊人久久综合| 一本色道久久| 性欧美1819性猛交| 久久久久久精| 欧美日韩精品一二三区| 国产精品高潮呻吟| 国产亚洲精品久久久久久| 国外成人性视频| 9人人澡人人爽人人精品| 亚洲一区二区三区四区中文| 欧美一区在线看| 久久夜色精品| a4yy欧美一区二区三区| 亚洲综合电影| 欧美 亚欧 日韩视频在线| 欧美精品一区三区在线观看| 国产精品精品视频| 精品av久久707| 亚洲一区二区欧美| 裸体歌舞表演一区二区| 亚洲人体一区| 久久国产色av| 欧美三区在线视频| 精品不卡一区二区三区| 亚洲视频在线免费观看| 久久精品亚洲一区二区三区浴池| 亚洲成人在线视频播放 | 西西人体一区二区| 欧美大片免费久久精品三p | 久久成人久久爱| 欧美精品福利| 国产真实久久| 亚洲一区二区三区在线视频| 久久青草久久| 亚洲视频久久| 欧美日本一道本在线视频| 国产一区二区三区免费不卡| 亚洲五月六月| 亚洲第一色在线| 欧美在线网址| 国产精品色网| 亚洲香蕉成视频在线观看| 欧美高清视频在线观看|