當前位置:首頁 » 操作系統 » dfm演算法

dfm演算法

發布時間: 2022-05-14 17:42:36

㈠ 什麼是設計技術參數

參數化設計(Parametric)設計(也叫尺寸驅動Dimension-Driven)是CAD技術在實際應用中提出的課題,它不僅可使CAD系統具有互動式繪圖功能,還具有自動繪圖的功能。目前它是CAD技術應用領域內的一個重要的、且待進一步研究的課題。利用參數化設計手段開發的專用產品設計系統,可使設計人員從大量繁重而瑣碎的繪圖工作中解脫出來,可以大大提高設計速度,並減少信息的存儲量。

由於上述應用背景,國內外對參數化設計做了大量的研究,目前參數化技術大致可分為如下三種方法:(1)基於幾何約束的數學方法;(2)基於幾何原理的人工智慧方法;(3)基於特徵模型的造型方法。其中數學方法又分為初等方法(Primary Approach)和代數方法(Algebraic Approach)。初等方法利用預先設定的演算法,求解一些特定的幾何約束。這種方法簡單、易於實現,但僅適用於只有水平和垂直方向約束的場合;代數法則將幾何約束轉換成代數方程,形成一個非線性方程組。該方程組求解較困難,因此實際應用受到限制;人工智慧方法是利用專家系統,對圖形中的幾何關系和約束進行理解,運用幾何原理推導出新的約束,這種方法的速度較慢,交互性不好;特徵造型方法是三維實體造型技術的發展,目前正在探討之中。

參數化設計有一種驅動機制棗參數驅動,參數驅動機制是基於對圖形數據的操作。通過參數驅動機制,可以對圖形的幾何數據進行參數化修改,但是,在修改的同時,還要滿足圖形的約束條件,需要約束間關聯性的驅動手段棗約束聯動,約束聯動是通過約束間的關系實現的驅動方法。對一個圖形,可能的約束十分復雜,而且數量很大。而實際由用戶控制的,即能夠獨立變化的參數一般只有幾個,稱之為主參數或主約束;其他約束可由圖形結構特徵確定或與主約束有確定關系,稱它們為次約束。對主約束是不能簡化的,對次約束的簡化可以有圖形特徵聯動和相關參數聯動兩種方式。

所謂圖形特徵聯動就是保證在圖形拓補關系不變的情況下,對次約束的驅動,亦即保證連續、相切、垂直、平行等關系不變。反映到參數驅動過程就是要根據各種幾何相關性准則去判識與被動點有上述拓補關系的實體及其幾何數據,在保證原關系不變的前提下,求出新的幾何數據。稱這些幾何數據為從動點。這樣,從動點的約束就與驅動參數有了聯系。依*這一聯系,從動點得到了驅動點的驅動,驅動機制則擴大了其作用范圍。

所謂相關參數聯動就是建立次約束與主約束在數值上和邏輯上的關系。在參數驅動過程中,始終要保持這種關系不變。相關參數的聯動方法使某些不能用拓補關系判斷的從動點與驅動點建立了聯系。使用這種方式時,常引入驅動樹,以建立主動點、從動點等之間的約束關系的樹形表示,便於直觀地判斷圖形的驅動與約束情況。

由於參數驅動是基於對圖形數據的操作,因此繪制一張圖的過程,就是在建立一個參數模型。繪圖系統將圖形映射到圖形資料庫中,設置出圖形實體的數據結構,參數驅動時將這些結構中填寫出不同內容,以生成所需要的圖形。

參數驅動可以被看作是沿驅動樹操作資料庫內容,不同的驅動樹,決定了參數驅動不同的操作。由於驅動樹是根據參數模型的圖形特徵和相關參數構成的,所以繪制參數模型時,有意識地利用圖形特徵,並根據實際需要標注相關參數,就能在參數驅動時,把握對資料庫的操作,以控制圖形的變化。繪圖者不僅可以定義圖形結構,還能控制參數化過程,就象用計算機語言編程一樣,定義數據、控製程序流程。這種建立圖形模型,定義圖形結構,控製程序流程的手段稱作圖形編程。

在圖形參數化中,圖形編程是建立在參數驅動機制、約束聯動和驅動樹基礎上的。利用參數驅動機制對圖形數據進行操作,由約束聯動和驅動樹控制驅動機制的運行。這與以往的參數化方法不同,它不把圖形轉化成其他表達形式,如方程,符號等;也不問繪圖過程,而是著重去理解圖形本身,把圖形看作是一個模型,一個參數化的依據,作為與繪圖者「交流」信息的媒介。繪圖者通過圖形把自己的意圖「告訴」參數化程序,參數化程序返回繪圖者所需要的圖形。它關心的是圖形,也就是圖形資料庫的內容,邊理解,邊操作,因此運行起來簡潔、明了;實現起來也較方便。

參數驅動是一種新的參數化方法,其基本特徵是直接對資料庫進行操作。因此它具有很好的交互性,用戶可以利用繪圖系統全部的交互功能修改圖形及其屬性,進而控制參數化的過程;與其他參數化方法相比較,參數驅動方法具有簡單、方便、易開發和使用的特點,能夠在現有的繪圖系統基礎上進行二次開發。而且適用面廣,對三維問題也同樣適用。

變數化方法

長期以來,變數化方法只能在二維上實現,三維變數化技術由於技術較復雜,進展緩慢,一直困擾著CAD廠商和用戶。

全國首屆CAD應用工程博覽會上,一種新興技術引起了與會者的廣泛關注。這一被業界稱為21世紀CAD領域具有革命性突破的新技術就是VGX。它是變數化方法的代表。

VGX的全稱為variational Geometry Extended,即超變數化幾何,它是由SDRC公司獨家推出的一種CAD軟體的核心技術。我們在進行機械設計和工藝設計時,總是希望零部件能夠讓我們隨心所欲地構建,可以隨意拆卸,能夠讓我們在平面的顯示器上,構造出三維立體的設計作品,而且希望保留每一個中間結果,以備反復設計和優化設計時使用。VGX實現的就是這樣一種思想。VGX技術擴展了變數化產品結構,允許用戶對一個完整的三維數字產品從幾何造型、設計過程、特徵,到設計約束,都可以進行實時直接操作。對於設計人員而言,採用VGX,就象拿捏一個真實的零部件面團一樣,可以隨意塑造其形狀,而且,隨著設計的深化,VGX可以保留每一個中間設計過程的產品信息。美國一家著名的專業咨詢評估公司D.H.Brown這樣評價VGX:「自從10年前第一次運用參數化基於特徵的實體建模技術之後,VGX可能是最引人注目的一次革命。」。VGX為用戶提出了一種交互操作模型的三維環境,設計人員在零部件上定義關系時,不再關心二維設計信息如何變成三維,從而簡化了設計建模的過程。採用VGX的長處在於,原有的參數化基於特徵的實體模型,在可編輯性及易編輯性方面得到極大的改善和提高。當用戶准備作預期的模型修改時,不必深入理解和查詢設計過程。與傳統二維變數化技術相比,VGX的技術突破主要表現在以下兩個方面。

第一、VGX提供了前所未有的三維變數化控制技術。這一技術可望成為解決長期懸而未決的尺寸標注問題的首選技術。因為傳統面向設計的實體建模軟體,無論是變數化的、參數化的,還是基於特徵的或尺寸驅動的,其尺寸標注方式通常並不是根據實際加工需要而設,往往是根據軟體的規則來確定。顯然,這在用戶主宰技術的時代勢必不能令用戶滿意。採用VGX的三維變數化控制技術,在不必重新生成幾何模型的前提下,能夠任意改變三維尺寸標注方式,這也為尋求面向製造的設計(DFM)解決方案提供了一條有效的途徑。

第二、VGX將兩種最佳的造型技術棗直接幾何描述和歷史樹描述結合起來,從而提供了更為易學易用的特性。設計人員可以針對零件上的任意特徵直接進行圖形化的編輯、修改,這就使得用戶對其三維產品的設計更為直觀和實時。用戶在一個主模型中,就可以實現動態地捕捉設計、分析和製造的意圖。

在SDRC公司1997年6月20日宣布的新版軟體I-DEAS Master Series 5中,已經用到了這一技術。而且,這一產品自在美國宣布之日起,已經在北美、歐洲和亞太等地區,引起了不小的沖擊波。福特汽車公司已經決定把I-DEAS Master Series 5軟體應用到開發完整產品的數字樣車的各個方面,認為這一包含諸多新技術的產品是實現該公司「Ford 2000」目標的關鍵。在同年7月北京展覽館的全國首屆CAD應用工程博覽會上,I-DEAS Master Series 5再度掀起熱浪,其VGX技術已經初露鋒芒。

㈡ 數據結構的排序怎麼比較時間

LARGE_INTEGER litmp;
LONGLONG qt1,qt2;
double dft,dff,dfm;
QueryPerformanceFrequency(&litmp);//獲得時鍾頻率
dff=(double)litmp.QuadPart;
QueryPerformanceCounter(&litmp);//獲得初始值
qt1=litmp.QuadPart;
quicksort(A,n,k);//這里是放你寫的排序
QueryPerformanceCounter(&litmp);//獲得終止值
qt2=litmp.QuadPart;
dfm=(double)(qt2-qt1);
dft=dfm/dff*1000;//獲得對應的時間值,單位為毫秒

這些函數在頭文件 windows.h中

㈢ 關於Delphi中動態數組的問題

從TComponent下來的組件都有一個屬性:Tag,可以利用這個屬性滿足你的要求,可以用類似這樣的代碼:
var
Form1: TForm1;

ImageBuffer: Array[0..2] of TImage;

implementation

{$R *.dfm}

procere TForm1.FormCreate(Sender: TObject);
begin
ImageBuffer[0] := TImage.Create(SELF);
ImageBuffer[0].Tag := 0;
...
ImageBuffer[0].OnClick := Image0Click;

ImageBuffer[1] := TImage.Create(SELF);
...
end;

procere TForm1.Image0Click(Sender: TObject);
begin
ShowMessage('Image0 Clicked!');
end;

Delphi語法還是很活的,只有想不到的,沒有做不到的

㈣ 有關delphi的random隨機函數使用問題

(看後面的例子)我不明白你說我寫的這個不能解決問題?可能是你對我的意思不太明白吧。我乾脆做一個實例出來,新建一個工程,在窗體上加一個按鈕和一個MEMO.代碼如下:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procere Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
id:integer;
implementation

{$R *.dfm}

function MyRan(oldval:integer):integer;
begin
repeat
Result:=random(10);
until Result<>oldval;
end;

procere TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:=0 to 100 do
begin
id:=MyRan(id);
Memo1.Lines.Add(inttostr(id)) ;
end;
end;

end.
點擊按鈕後,MEMO1裡面就產生100個不與上一個重復的10以內數字。

變顏色有何難,新建一個工程,在窗體上加一個按鈕,然後代碼如下:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type

TForm1 = class(TForm)
Button1: TButton;
procere Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
id:integer;
AColor: Array[0..3] of TColor;
implementation

{$R *.dfm}

function MyRan(oldval:integer):integer;
begin
repeat
Result:=random(4);
until Result<>oldval;
end;

procere TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
id:=MyRan(id);
Color:=AColor[id];
end;

begin
AColor[0]:=clRed;
AColor[1]:=clWhite;
AColor[2]:=clGreen;
AColor[3]:=clBlue;
end.

㈤ delphi四捨六入函數問題

在DELPHI中Round()和RoundTo()都是四捨五入的函數,但DELPHI用的四捨五入與一般的四捨五入不同,它採用的是四捨六入五留雙。
即當舍或入位大於或小於五時按四捨五入來處理,而當舍或入位等於五時,就要看前面一位是什麼,根據奇進偶不進,它總是返回一個偶數值。這種演算法其實是按照銀行家演算法,統計學上一般都用這種演算法,比傳統的"四捨五入"要科學。在VB、.net相關的語言中都有這個問題。

例如:
表達式 返回值
Round(11.5) 12
Round(10.5) 10
RoundTo(1234567, 3) 1234000
RoundTo(1.234, -2) 1.23
RoundTo(1.235, -2) 1.24
RoundTo(1.245, -2) 1.24
如果要使用傳統的"四捨五入"方法,可以使用下面函數:
function RoundEx(R: Real): Int64;
begin
Result:= Trunc(R);
if Frac(R) >= 0.5 then
Result:= Result + 1;
end;

function DRound(const Value: Extended; const Digit: Byte = 0): Extended;
var
tmp: Extended;
begin
tmp := Power(10, Digit);
if Value > 0 then
Result := Value * tmp + 0.5
else
Result := Value * tmp - 0.5;
Result := Trunc(Result) / tmp;
end;

㈥ Delphi 關於多維數組計算

直接生成的話貌似有點麻煩。。
我的思路:
生成一個3*3矩陣
1 1 1
0 0 0
0 0 0
依次變化為
1 1 0 1 1 0 1 0 1
0 0 1 -> 0 0 0 -> 0 1 0
0 0 0 0 0 1 0 0 0
這樣,將你的矩陣與這個矩陣相乘可以得到。。
for i:=0 to 2 do
for i :=0 to power(行,(列-1)) do
begin
//矩陣相乘(結果不能為sum(Xi*Yi),而應該加權)
//對輸出數組賦值
//矩陣改變
end;

㈦ delphi中如何獲取漢字的拼音首字母~!

function GetPYIndexChar( hzchar:string):char;
begin //的到一個漢字的拼音頭個字母
case WORD(hzchar[1]) shl 8 + WORD(hzchar[2]) of
$B0A1..$B0C4 : result := 'A';
$B0C5..$B2C0 : result := 'B';
$B2C1..$B4ED : result := 'C';
$B4EE..$B6E9 : result := 'D';
$B6EA..$B7A1 : result := 'E';
$B7A2..$B8C0 : result := 'F';
$B8C1..$B9FD : result := 'G';
$B9FE..$BBF6 : result := 'H';
$BBF7..$BFA5 : result := 'J';
$BFA6..$C0AB : result := 'K';
$C0AC..$C2E7 : result := 'L';
$C2E8..$C4C2 : result := 'M';
$C4C3..$C5B5 : result := 'N';
$C5B6..$C5BD : result := 'O';
$C5BE..$C6D9 : result := 'P';
$C6DA..$C8BA : result := 'Q';
$C8BB..$C8F5 : result := 'R';
$C8F6..$CBF9 : result := 'S';
$CBFA..$CDD9 : result := 'T';
$CDDA..$CEF3 : result := 'W';
$CEF4..$D188 : result := 'X';
$D1B9..$D4D0 : result := 'Y';
$D4D1..$D7F9 : result := 'Z';
else
result := char(0);
end;
end;

以下是我的原碼100%可以
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
procere Button1Click(Sender: TObject);
private
{ Private declarations }

public
{ Public declarations }
end;
function GetPYIndexChar( hzchar:string):char;
var
Form1: TForm1;

implementation

{$R *.dfm}

function GetPYIndexChar( hzchar:string):char;
begin //的到一個漢字的拼音頭個字母
case WORD(hzchar[1]) shl 8 + WORD(hzchar[2]) of
$B0A1..$B0C4 : result := 'A';
$B0C5..$B2C0 : result := 'B';
$B2C1..$B4ED : result := 'C';
$B4EE..$B6E9 : result := 'D';
$B6EA..$B7A1 : result := 'E';
$B7A2..$B8C0 : result := 'F';
$B8C1..$B9FD : result := 'G';
$B9FE..$BBF6 : result := 'H';
$BBF7..$BFA5 : result := 'J';
$BFA6..$C0AB : result := 'K';
$C0AC..$C2E7 : result := 'L';
$C2E8..$C4C2 : result := 'M';
$C4C3..$C5B5 : result := 'N';
$C5B6..$C5BD : result := 'O';
$C5BE..$C6D9 : result := 'P';
$C6DA..$C8BA : result := 'Q';
$C8BB..$C8F5 : result := 'R';
$C8F6..$CBF9 : result := 'S';
$CBFA..$CDD9 : result := 'T';
$CDDA..$CEF3 : result := 'W';
$CEF4..$D188 : result := 'X';
$D1B9..$D4D0 : result := 'Y';
$D4D1..$D7F9 : result := 'Z';
else
result := char(0);
end;
end;

procere TForm1.Button1Click(Sender: TObject);
begin
edit2.Text:=GetPYIndexChar(edit1.Text);
end;

end.

㈧ 無人機系統六大組成要素

與硬體、飛控溝通確定電子部件組成形式:電子部件有飛控、電調、射頻、視覺、GPS、外置IMU、外置磁力計、雲台、其他(天線、LED等). 進行整機堆疊布局:將無人機中所有的關鍵部件羅列出來,包括但不限於機臂、電機、槳葉、電池、(雲台)、相機、(腳架)和電子部件,GPS、天線等位置要考慮怎樣對對射頻信號收發性能有。 一般消費類影像無人機是塑膠件加五金(主要是雲台需要用、因為剛度要求高)、行業應用無人機有塑膠也有碳板、碳管搭配一些五金。就是電子產品結構設計,考慮DFM、DFA。結合具體情況,可能需要設計一些結構。 結構設計過程中確定了模塊PCB結構就輸出結構要素圖給硬體畫板。 所以對無人機結構工程師來說,結構設計方法和其他產品沒什麼區別,但首先要熟悉無人機系統,一個優秀的結構工程師會主動去了解與它相關的所有領域,不管是感測器、視覺、圖傳、地面站還是演算法.

㈨ delphi冒泡排序問題

這些程序用的都是最簡單的DELPHI語言啊?難道是沒學過DELPHI?用了兩個全局變數,一個是數組num,另一個是整數i。這不是一個好的程序,雖然也能用。

熱點內容
android視頻p2p 發布:2024-10-10 15:16:06 瀏覽:715
python3scrapy爬蟲 發布:2024-10-10 15:11:55 瀏覽:91
身份存儲 發布:2024-10-10 14:51:29 瀏覽:535
ns2源碼 發布:2024-10-10 14:46:42 瀏覽:565
print函數python 發布:2024-10-10 14:46:20 瀏覽:236
如何搭建模擬交易伺服器 發布:2024-10-10 14:37:45 瀏覽:564
ip無法訪問nginx 發布:2024-10-10 14:17:03 瀏覽:741
殷雷加密狗驅動下載 發布:2024-10-10 13:56:37 瀏覽:648
pc游戲編程人機博弈 發布:2024-10-10 13:49:32 瀏覽:455
有什麼軟體可以套wifi密碼 發布:2024-10-10 13:32:06 瀏覽:823