AutoCAD Civil 3D-部件-部件编辑器自定义边坡与材质

最近发现很多同志C3D设计好道路,进入AIW总有很多问题,不是没有边坡,就是没有材质。

所以今天做了一个小测试,就是用部件编辑器做一个自定义装配,然后C3D调用,infraworks导入,发现都没问题。正常识别。

对于我之前在案例教程中说计算材质是不用的,只需要连接上代码就可以。在此更正,抱歉。

下面主要说一下几个重点。

1、部件编辑器装配制作

这个具体就不多说了,主要说一个重点就是给每个连接写上代码,这个很重要,有了代码,才能在C3D里连接设置材质。例如我的所有连接代码设置为“po1”这个名字随意,自己能找到就行。

注:代码是一个字符串,要用引号。本人曾设置几次总是出错,后来设为字串才通过了。

2、C3D装配调用与代码连接

然后再C3D里设计道路。里载入这个装配,添加到道路边坡。并且导入代码。

导入后,就在这里看到有这个代码。然后设置材质。

设置完成后,生成道路,查看器查看如图。

3、AIW导入

导入AIW 结果如果所示。

总结一下,几个关键点

1、部件编辑器,连接代码;

2、C3D代码材质;

3、AIW中勾选,使用道路区域,而不是顶部曲面。

本文来自网络,因原文未写明作者,故此无法标明。

展开阅读全文

designer无法加载自定义部件

11-29

第一次尝试编写一个继承于QLineEdit的自定义部件,实现一些其他的功能,能编译通过并在designer的插件文件夹生成so文件,但是designer中无法加载,网上的帖子千篇一律的都是转载的C++ Qt那本书上第五章的内容,不知道问题出在哪,高手帮忙看看rnrnpro文件rn[code=C/C++]TEMPLATE = librnCONFIG += designer plugin releasernHEADERS += myeditplugin.h \rn myedit.hrnSOURCES += myeditplugin.cpp \rn myedit.cpprnDESTDIR = $$[QT_INSTALL_PLUGINS]/designerrnTARGET = myEdit[/code]rnrn插件的头文件myeditplugin.hrn[code=C/C++]#ifndef MYEDITPLUGIN_Hrn#define MYEDITPLUGIN_Hrnrn#include rnrnclass MyEditPlugin : public QObject,rn public QDesignerCustomWidgetInterfacernrn Q_OBJECTrn Q_INTERFACES(QDesignerCustomWidgetInterface)rnpublic:rn MyEditPlugin(QObject *parent=0);rn QString name() const;rn QString includeFile() const;rn QString group() const;rn QIcon icon() const;rn QString toolTip() const;rn QString whatsThis() const;rn bool isContainer() const;rn QWidget *createWidget(QWidget *parent);rn;rnrn#endif // MYEDITPLUGIN_H[/code]rnrn插件的实现文件myeditplugin.cpprn[code=C/C++]#include "myeditplugin.h"rn#include "myedit.h"rnrn#include rn#define ICON_PATH "/opt/QtDesktop/image/qt_myEditPlugin/"rnrnMyEditPlugin::MyEditPlugin(QObject *parent)rn :QObject(parent)rnrnrnrnQString MyEditPlugin::name() constrnrn return "myEdit";rnrnrnQString MyEditPlugin::includeFile() constrnrn return "myedit.h";rnrnrnQString MyEditPlugin::group() constrnrn return tr("My Widgets");rnrnrnQIcon MyEditPlugin::icon() constrnrn return QIcon(ICON_PATH + QString("myEditPluginIcon.png"));rnrnrnQString MyEditPlugin::toolTip() constrnrn return tr("Can use systemkeyboard");rnrnrnQString MyEditPlugin::whatsThis() constrnrn return tr("");rnrnrnbool MyEditPlugin::isContainer() constrnrn return false;rnrnrnQWidget *MyEditPlugin::createWidget(QWidget *parent)rnrn return new MyEdit(parent);rnrnrnQ_EXPORT_PLUGIN2(myEditPlugin,MyEditPlugin)[/code]rnrn我自定义的继承于QLineEdit的头文件myedit.hrn[code=C/C++]#ifndef MYEDITPLUGIN_Hrn#define MYEDITPLUGIN_Hrnrn#include rnrnclass MyEditPlugin : public QObject,rn public QDesignerCustomWidgetInterfacernrn Q_OBJECTrn Q_INTERFACES(QDesignerCustomWidgetInterface)rnpublic:rn MyEditPlugin(QObject *parent=0);rn QString name() const;rn QString includeFile() const;rn QString group() const;rn QIcon icon() const;rn QString toolTip() const;rn QString whatsThis() const;rn bool isContainer() const;rn QWidget *createWidget(QWidget *parent);rn;rnrn#endif // MYEDITPLUGIN_H[/code]rnrn实现文件myedit.cpp应该不是问出问题的地方,在别的程序中已经测试通过了,就不贴出来了rnqmake make过后生成了so文件rn[code=C/C++]mv -f libmyEdit.so /usr/local/Trolltech/QtEmbedded-4.4.3/plugins/designer/[/code]rn但就是无法加载,第一次闹这东西,实在是找不到问题出在哪了,高手指点啊rn[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img] 论坛

自定义webpart部件问题

12-01

小弟自定义一个webpart,用来读取列表数据并绑定到gridview上,一直通不过去,页面提示:值不在预期的范围内。rn不清楚到底错在哪了,请各位指导下,谢谢了。rnrn[code=C#]rnusing System;rnusing System.Collections.Generic;rnusing System.ComponentModel;rnusing System.Text;rnusing System.Web;rnusing System.Web.UI;rnusing System.Web.UI.WebControls;rnusing Microsoft.SharePoint.WebPartPages;rnusing Microsoft.SharePoint;rnusing System.Data;rnusing System.Xml.Serialization;rnnamespace MyWebPartrnrnrn [XmlRoot(Namespace = "MyWebPart")] rn [DefaultProperty("Text")]rn [ToolboxData("<0:WebPartTest runat=server>")]rn rnrn public class WebPartTest : WebPartrn rn [Bindable(true)]rn [Category("Appearance")]rn [DefaultValue("")]rn [Localizable(true)]rnrnrn protected Label label;rn protected GridView gridview;rnrnrn public string Textrn rn getrn rn String s = (String)ViewState["Text"];rn return ((s == null) ? "[" + this.ID + "]" : s);rn rnrn setrn rn ViewState["Text"] = value;rn rn rn protected override void RenderWebPart(HtmlTextWriter output)rn rn //base.RenderWebPart(output);rn RenderChildren(output);rn rn protected override void CreateChildControls()rn rn //base.CreateChildControls();rnrn label = new Label();rn label.Text = "This is a webpart test...";rnrn Controls.Add(label);rnrn gridview = new GridView();rn gridview.Load += new EventHandler(GridViewLoad);rnrnrn gridview.AutoGenerateColumns = true;rnrn Controls.Add(gridview);rnrn rn public void GridViewLoad(object sender, EventArgs e)rn rn BindGridView();rn rnrn private void BindGridView()rn rn using (SPWeb web = SPContext.Current.Web)rn rn SPList list = web.Lists["列表001"];rn if (list != null)rn rn SPQuery spquery = new SPQuery();rn gridview.DataSource = list.GetItems(spquery).GetDataTable();rn gridview.DataBind();rnrn rn elsern rnrn // label.Text = "no list....";rn rnrn rnrn throw new NotImplementedException();rn rnrn rnrnrnrn[/code] 论坛

事件问题 父窗口部件与子窗口部件问题

02-09

////////////////////////////////////////////main.cpp ///////////////////////////////// rn #include"KDlg.h" rn int main(int argc,char* argv[]) rn rn QApplication app(argc,argv); rn KDialog kdlg; ////////////////////////第一个疑问点点点点点点点点点点点点点点点点点 rn kdlg.resize(400, 300); rn kdlg.setWindowTitle(QObject::tr("KDialog")); rn kdlg.show(); rn return app.exec(); rn rnrn //////////////////////////////////////////KDlg.h////////////////////////////////////// rn #ifndef KDLG_H rn #define KDLG_H rnrn #include rn #include rn #include rn #include rnrn class KDialog:public QDialog rn rn Q_OBJECT rn public: rn KDialog(); rn private: rn QPushButton *KBtn1; rn QPushButton *KBtn2; rn protected: rn void keyPressEvent(QKeyEvent *event); rn ; rnrn #endif // KDLG_H rnrn /////////////////////////////////KDlg.cpp /////////////////////////////////// rn #include"KDlg.h" rnrn KDialog::KDialog() rn rn KBtn1 = new QPushButton(this); /////////////////////////第一个疑问点点点点点点点点点点点点点点点点点 rn KBtn1->setGeometry(50,50,85,27); rn KBtn1->setText("BTN1111111"); rnrn KBtn2 = new QPushButton(this); rn KBtn2->setGeometry(150,50,85,27); rn KBtn2->setText("BTN2222222"); rn rnrn void KDialog::keyPressEvent(QKeyEvent *event) rn rn if(event->key() == Qt::Key_F1) rn rn KBtn1->setText("KEYPRESS111111111"); rn KBtn2->setText("KEYPRESS222222222"); rn rn rnrn //////////////////////////////////////////////////////////////////////////////////////////// rn ///////////////////////////大家帮我看看,我对下面的现象不是很明白,哪位帮我解读解读,谢谢啦! rn /////////////////////////////////////////实现同一种效果,上面是第一种方式,下面是第二种方式。rn/////////////////////////////第一种方式父窗口是自定义类的对象,第二种方式父窗口部件是QDialog。 rn //////////////////////////////////////////////////////////////////////////////////////////// rn/////////////////////////////////////////main.cpp /////////////////////////////////////////// rn #include"KDlg_parent.h" rnrn int main(int argc,char* argv[]) rn rn QApplication app(argc,argv); rn QDialog* dlg = new QDialog; rn KDialog kdlg(dlg); /////////////////////////////////第一个疑问点点点点点点点点点点点点点点点点点 rn dlg->resize(400, 300); rn dlg->setWindowTitle(QObject::tr("KDialog")); rn dlg->show(); rn return app.exec(); rn rnrn /////////////////////////////////////KDlg_parent.h /////////////////////////////////////////// rn #ifndef KDLG_PARENT_H rn #define KDLG_PARENT_H rnrn #include rn #include rn #include rnrn class KDialog:public QDialog rn rn Q_OBJECT rn public: rn KDialog(QDialog* = 0); rn private: rn QPushButton *KBtn1; rn QPushButton *KBtn2; rn protected: rn bool eventFilter(QObject *target, QEvent *event); rn ; rnrn #endif // KDLG_PARENT_H rnrn /////////////////////////////////////KDlg_parent.cpp //////////////////////////////////// rn #include"KDlg_parent.h" rnrn KDialog::KDialog(QDialog* parent):QDialog(parent) rn rn KBtn1 = new QPushButton(parent); //////////////////////第一个疑问点点点点点点点点点点点点点点点点 rn KBtn1->setGeometry(50,50,85,27); rn KBtn1->setText("BTN1111111111"); rnrn KBtn2 = new QPushButton(parent); rn KBtn2->setGeometry(150,50,85,27); rn KBtn2->setText("BTN2222222222"); rnrn KBtn2->installEventFilter(this); ////////////////////////////////安装事件过滤器 rn rnrn bool KDialog::eventFilter(QObject *target, QEvent *event) rn rn if(target == KBtn2) rn rn if(event->type() == QEvent::KeyPress) rn rn QKeyEvent *keyEvent = static_cast(event); rn if(keyEvent->key() == Qt::Key_F1) rn rn KBtn2->setText("KEYPRESS111111111"); rn KBtn2->setText("KEYPRESS222222222"); rn rn return true; rn rn rn return QDialog::eventFilter(target,event); rn rnrn //////////////////////////////////////////////////////////////////////////////////////////////// rn 我不明白的问题有几个: rn 一、第一种方法 KBtn1 = new QPushButton(this); 中 this 意思是父窗口是他本身,第二种方法 KBtn1 = new QPushButton(parent); 中的 parent 意思是父窗口是QDialog的对象。我的解释有没有错?如果没有错为什么第二种方法中的 parents 不能用 this ?哪种方法好(也就是要不要 QDialog 作为父窗口)? rn 二、为什么第二个工程的事件不能用重新实现 keyPressEvent() 的方法,而只能用安装事件过滤器的方法? rn 三、为什么第二种方法中只有当 KBtn2 获得焦点后(运行之初要通过方向键将焦点移至 KBtn2 )按键盘 F1 键才能响应键盘事件? 有什么方法能一运行 按 F1 键就能响应键盘事件? rn 谢谢朋友的回答!!! 论坛

没有更多推荐了,返回首页