| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #include<iostream> |
| | #include "rs_block.h" |
| |
|
| | #include "rs_blocklist.h" |
| | #include "rs_graphic.h" |
| | #include "rs_insert.h" |
| | #include "rs_line.h" |
| |
|
| | RS_BlockData::RS_BlockData(const QString& _name, |
| | const RS_Vector& _basePoint, |
| | bool _frozen): |
| | name(_name) |
| | ,basePoint(_basePoint) |
| | ,frozen(_frozen){ |
| | } |
| |
|
| | bool RS_BlockData::isValid() const{ |
| | return (!name.isEmpty() && basePoint.valid); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | RS_Block::RS_Block(RS_EntityContainer* parent, |
| | const RS_BlockData& d) |
| | : RS_Document(parent), data(d){ |
| | setPen({RS_Color(128,128,128), RS2::Width01, RS2::SolidLine}); |
| | } |
| |
|
| | RS_Entity* RS_Block::clone() const { |
| | auto blk = new RS_Block(*this); |
| | blk->setOwner(isOwner()); |
| | blk->detach(); |
| | return blk; |
| | } |
| |
|
| |
|
| |
|
| | RS_LayerList* RS_Block::getLayerList() { |
| | RS_Graphic* g = getGraphic(); |
| | return (g != nullptr) ? g->getLayerList() : nullptr; |
| | } |
| |
|
| | RS_BlockList* RS_Block::getBlockList() { |
| | RS_Graphic* g = getGraphic(); |
| | return (g != nullptr) ? g->getBlockList() : nullptr; |
| | } |
| |
|
| | LC_DimStylesList* RS_Block::getDimStyleList() { |
| | RS_Graphic* g = getGraphic(); |
| | return (g != nullptr) ? g->getDimStyleList() : nullptr; |
| | } |
| |
|
| | LC_TextStyleList* RS_Block::getTextStyleList() { |
| | RS_Graphic* g = getGraphic(); |
| | return (g != nullptr) ? g->getTextStyleList() : nullptr; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | void RS_Block::setModified(bool m) { |
| | RS_Graphic* p = getGraphic(); |
| | if (p) { |
| | p->setModified(m); |
| | } |
| | modified = m; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | void RS_Block::visibleInBlockList(bool v) { |
| | data.visibleInBlockList = v; |
| | } |
| |
|
| | |
| | |
| | |
| | bool RS_Block::isVisibleInBlockList() const { |
| | return data.visibleInBlockList; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | void RS_Block::selectedInBlockList(bool v) const { |
| | data.selectedInBlockList = v; |
| | } |
| |
|
| | |
| | |
| | |
| | bool RS_Block::isSelectedInBlockList() const { |
| | return data.selectedInBlockList; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | QStringList RS_Block::findNestedInsert(const QString& bName) { |
| |
|
| | QStringList bnChain; |
| |
|
| | for (RS_Entity* e: *this) { |
| | if (e->rtti()==RS2::EntityInsert) { |
| | RS_Insert* i = ((RS_Insert*)e); |
| | QString iName = i->getName(); |
| | if (iName == bName) { |
| | bnChain << data.name; |
| | break; |
| | } else { |
| | RS_BlockList* bList = getBlockList(); |
| | if (bList) { |
| | RS_Block* nestedBlock = bList->find(iName); |
| | if (nestedBlock) { |
| | QStringList nestedChain; |
| | nestedChain = nestedBlock->findNestedInsert(bName); |
| | if (!nestedChain.empty()) { |
| | bnChain << data.name; |
| | bnChain << nestedChain; |
| | break; |
| | } |
| | } |
| | } |
| | } |
| | } |
| | } |
| |
|
| | return bnChain; |
| | } |
| |
|
| | void RS_Block::addByBlockLine(const RS_Vector& start, const RS_Vector& end) { |
| | addByBlockEntity(new RS_Line(start, end)); |
| | } |
| |
|
| | void RS_Block::addByBlockEntity(RS_Entity* entity) { |
| | RS_Pen byBlockPen(RS2::FlagByBlock, RS2::WidthByBlock, RS2::LineByBlock); |
| | entity->setPen(byBlockPen); |
| | addEntity(entity); |
| | } |
| |
|
| | std::ostream& operator << (std::ostream& os, const RS_Block& b) { |
| | os << " name: " << b.getName().toLatin1().data() << "\n"; |
| | os << " entities: " << (RS_EntityContainer&)b << "\n"; |
| | return os; |
| | } |
| |
|