ObjectARX
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Simple Associative Dimension

18 REPLIES 18
SOLVED
Reply
Message 1 of 19
EMD1954
742 Views, 18 Replies

Simple Associative Dimension

Does anyone have a sample of how to create an associative dimension between two points?

Thanks,

Ed

18 REPLIES 18
Message 2 of 19
EMD1954
in reply to: EMD1954

Sorry, forgot to add that this is a simple, linear dimension.

Message 3 of 19
Alexander.Rivilis
in reply to: EMD1954

Maybe this sample can help you: https://adndevblog.typepad.com/autocad/2015/03/creating-associative-dimension-in-paperspace-associat...

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 4 of 19
EMD1954
in reply to: EMD1954

I want to do it in model space, not paper space.  Not sure this is appropriate?

Message 5 of 19
Alexander.Rivilis
in reply to: EMD1954


@EMD1954 wrote:

I want to do it in model space, not paper space.  Not sure this is appropriate?


The same in model space. I think you have to do minimum changes in this code.

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 6 of 19
EMD1954
in reply to: Alexander.Rivilis

Okay, thanks.  I'll let you know how it works for me.

Message 7 of 19
EMD1954
in reply to: EMD1954

Alexander,

 

The file "Results.pdf" show the results when I call "paperRotatedDimAssoc()", and "__Temp.TXT" (my .cpp file) is my code.  Any suggestions?

Message 8 of 19
Alexander.Rivilis
in reply to: EMD1954

Maybe you have to change dimension properties (or dimension style)

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 9 of 19
EMD1954
in reply to: Alexander.Rivilis

I set all of the appropriate system variables and only got slight improvement.  Then I tried the old-fashioned way:

 

int es = acedCommandS(RTSTR, _T("_DIMENSION"), RTSTR, _T("0.0,0.0"), RTSTR, _T("0.0,240.0"), RTSTR, _T("0.0,0.0"), RTSTR, _T(""), RTNONE);

 

It returns -5001.

Message 10 of 19
Alexander.Rivilis
in reply to: EMD1954

You can set dimension style to dimension with this code:

dim->setDatabaseDefaults();
dim->setDimstyleData(pCurDb->dimstyle());

 

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 11 of 19
EMD1954
in reply to: Alexander.Rivilis

Yes, I had both of those.  Do you see what's wrong with my acedCommansS()?  Any idea why it doesn't work?

Message 12 of 19
Alexander.Rivilis
in reply to: EMD1954


@EMD1954 wrote:

Yes, I had both of those.  Do you see what's wrong with my acedCommansS()?  Any idea why it doesn't work?


Context of document or application? Also you can set CMDECHO to 1 in order to see in commandline what wrong.

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 13 of 19
EMD1954
in reply to: Alexander.Rivilis

Here's the command line:

 

Dim: 0.0,0.0
Dim: 0.0,240.0
Dim: 0.0,0.0
Dim:
Type EXIT to return to COMMAND prompt.

 

If I add _T("EXIT") instead of _T("") like this:

 int es = acedCommandS(RTSTR, _T("_DIM"), RTSTR, _T("0.0,0.0"), RTSTR, _T("0.0,240.0"), RTSTR, _T("0.0,0.0"), RTSTR, _T("EXIT"), RTNONE);)

Dim: 0.0,0.0
Dim: 0.0,240.0
Dim: 0.0,0.0

with es = 5100
Dim: EXIT

 

Message 14 of 19
EMD1954
in reply to: EMD1954

Alexander,

 

I tried this, with the same results:

 

struct resbuf *cmdlist;
cmdlist = acutBuildList(RTSTR, _T("DIM"), RTSTR, _T("0.0,0.0"), RTSTR, _T("0.0,240.0"), RTSTR, _T("0.0,0.0"), RTSTR, _T("EXIT"), RTNONE);
if (cmdlist == NULL) acdbFail(_T("Couldn't create list\n"));
 
acedCmdS(cmdlist);
acutRelRb(cmdlist);

 

Dim: 0.0,0.0
Dim: 0.0,240.0
Dim: 0.0,0.0
Dim: EXIT

 

I'm lost.

Message 15 of 19
EMD1954
in reply to: EMD1954

Finally, after too many hours, I think I worked out all of the bugs.  This seems to work just fine in case anyone else was looking for this:

 

//-----------------------------------------------------------------------------
//------ FUNCTION makeRotatedDim() ------//
void makeRotatedDim(AcGePoint3d pt1, AcGePoint3d pt2, double dAngle)
{
 
Acad::ErrorStatus es;
AcGePoint3d ptMid = getMidPoint(pt1, pt2);  // getMidPoint is one of my simple utilities
AcDbBlockTableRecord* blkRec;
AcDbDatabase *pCurDb;
 
pCurDb = acdbHostApplicationServices()->workingDatabase();
 
AcDbRotatedDimension* dim = new AcDbRotatedDimension;
 
dim->setXLine1Point(pt1);
dim->setXLine2Point(pt2);
dim->setRotation(dAngle);
 
dim->setHorizontalRotation(dAngle);
dim->useDefaultTextPosition();
dim->setDatabaseDefaults();
 
es = acdbOpenObject(blkRec, pCurDb->currentSpaceId(), AcDb::kForWrite);
acedAlert(acadErrorStatusText(es));
 
es = blkRec->appendAcDbEntity(dim);
if(es!=Acad::eOk) acutPrintf(_T("\nError adding entity (%d)"), es);
 
blkRec->close();
 
dim->close();
 
return;
 
} // end of function makeRotatedDim()
 
 

 

Message 16 of 19
Alexander.Rivilis
in reply to: EMD1954


@EMD1954 wrote:

Finally, after too many hours, I think I worked out all of the bugs.  This seems to work just fine in case anyone else was looking for this:

 

 


This dimension is not associative. In order to create associative dimension you have to use code from link I've posted above.

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 17 of 19
EMD1954
in reply to: Alexander.Rivilis

Alexander,

 

All I know is that when I stretch it, the dimension text changes properly, so it does everything I needed it to do.

 

Thanks,

Ed

Message 18 of 19
Alexander.Rivilis
in reply to: EMD1954


@EMD1954 wrote:

Alexander,

 

All I know is that when I stretch it, the dimension text changes properly, so it does everything I needed it to do.

 

Thanks,

Ed


About associative dimensions: 

Dimensions can be associative, which mean that they adjust to changes in the geometric objects that they measure.

Dimension associativity defines the relationship between geometric objects and the dimensions that give their distance and angles.

 

https://help.autodesk.com/view/ACD/2023/ENU/?guid=GUID-8B7E8C96-C30D-409E-881E-7942871E80DA

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 19 of 19
EMD1954
in reply to: Alexander.Rivilis

Sorry for the mistake in nomenclature.  I just needed a dimension object that hit the correct points, had the correct text and changes when I stretch it.  I'm good and will close this thread.

 

Thanks,

Ed

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report

”Boost