Simple Associative Dimension

Simple Associative Dimension

EMD1954
Advocate Advocate
4,793 Views
18 Replies
Message 1 of 19

Simple Associative Dimension

EMD1954
Advocate
Advocate

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

Thanks,

Ed

0 Likes
Accepted solutions (1)
4,794 Views
18 Replies
Replies (18)
Message 2 of 19

EMD1954
Advocate
Advocate

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

0 Likes
Message 3 of 19

Alexander.Rivilis
Mentor
Mentor

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

0 Likes
Message 4 of 19

EMD1954
Advocate
Advocate

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

0 Likes
Message 5 of 19

Alexander.Rivilis
Mentor
Mentor

@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

0 Likes
Message 6 of 19

EMD1954
Advocate
Advocate

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

0 Likes
Message 7 of 19

EMD1954
Advocate
Advocate

Alexander,

 

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

0 Likes
Message 8 of 19

Alexander.Rivilis
Mentor
Mentor

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

0 Likes
Message 9 of 19

EMD1954
Advocate
Advocate

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.

0 Likes
Message 10 of 19

Alexander.Rivilis
Mentor
Mentor

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

0 Likes
Message 11 of 19

EMD1954
Advocate
Advocate

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

0 Likes
Message 12 of 19

Alexander.Rivilis
Mentor
Mentor

@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

0 Likes
Message 13 of 19

EMD1954
Advocate
Advocate

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

 

0 Likes
Message 14 of 19

EMD1954
Advocate
Advocate

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.

0 Likes
Message 15 of 19

EMD1954
Advocate
Advocate

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()
 
 

 

0 Likes
Message 16 of 19

Alexander.Rivilis
Mentor
Mentor

@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

0 Likes
Message 17 of 19

EMD1954
Advocate
Advocate

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

0 Likes
Message 18 of 19

Alexander.Rivilis
Mentor
Mentor

@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

0 Likes
Message 19 of 19

EMD1954
Advocate
Advocate
Accepted solution

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

0 Likes