Đến nội dung


Hình ảnh
* * * - - 8 Bình chọn

Viết lisp theo yêu cầu [phần 2]


  • Chủ đề bị khóa Chủ đề bị khóa
3783 replies to this topic

#2821 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 02 December 2010 - 03:11 PM

Chào bác Bình!
Mình thấy lisp bác viết cho bạn " Gió trời" rất hay. Nhưng khi mình chạy nó hay bị báo lỗi ; error: bad argument type: fixnump: nil. Lỗi này là sao vậy bạn có phải do file mình bị lỗi hay không? Hay là do nó tính diện tích bị lỗi? Mình cũng cần xuất các dữ liệu từ cad sang excel giống như bạn phongthien vậy. Nhưng mình không cần phải tính diện tích thực tế, mà chỉ cấn xuất lớp "dien tich giay chung nhan" đã có sẵn mà thôi. Bác sữa lisp dùm mình tí nhé.
Cám ơn bác nhìu nhìu!!

Hề hề hề,
Chào bạn yêu CAD (love cad),
Vì lisp mình viết cho bạn phongthien có tới hai ba cái lận, nên chưa rõ bạn cần cái nào. Đoán theo cái bạn hỏi thì có nhẽ nó là cái lisp tkqh thì phải. Nếu vậy thì câu trả lời sẽ là như sau:
1/- Việc cái lỗi bad argument type: fixmumber: nil có thể do một vài nguyên nhân như sau:
- Do lisp sử dụng lệnh boundary để tạo polyline bao quanh thửa đất mình chọn rồi mới tính được diện tích của cái boundary đó bằng hàm (command "area" "o" (entlast)) và (getvar "area") bạn ạ. Mà cái lệnh boundary này nó hơi bị kiêu nên nếu bạn không cho nó nhòm thấy người yêu của nó (thửa đất) một cách rõ ràng nhất, (tức là đầy đủ các đường bao xung quanh thửa đất và các đường bao này phải thật sự khép kín) thì nó sẽ không chịu cưới. (không tạo được boundary). Và thế là chả thể có con cái gì cả, ( cái vụ (command "area" "o" (entlast)) sẽ trả về nil ) nên lấy đâu ra cháu bồng (thằng (getvar "area") sẽ báo lỗi như bạn thấy) hề hề hề.
Vậy nên cách khắc phục trong trường hợp này chính là khi bạn muốn thống kê tại khu vực nào của bản vẽ thì nên zoom cái khu vực ấy lên cho đủ lớn để có thể nhòm thấy đầy đủ các đường bao của các thửa đất một cách rõ ràng nhất bạn ạ, và chỉ chọn các thửa đất thấy đủ các đường bao để làm bảng thống kê thôi.
- Cũng do cái hàm boundary này mà khi các đường bao thửa đất được vẽ bởi cáp polyline quá loằng ngoằng thì khi tách các đảo trống ở giửa nó tách không nổi và thế là nó tiệt giống luôn và cho bạn cái báo lỗi to đùng ngã ngửa như vậy.
Các khắc phục trong trường hợp này là nên chữa lại các đường bao sao cho đơn giản và dễ nhận biết nhất tức là nên cắt các đường bao này tại những điểm góc ranh cho phù hợp.
Hề hề hề, Ấy là cái cách hiểu của mình, tuy chả được khoa học lắm nhưng có nhẽ với dân đi mót như mình thì cũng hề hề hề được.
2/- Việc bạn chả muốn có cái cột diện tích thực tế trên Excel thì chả có gì khó khăn cả bạn ạ. Bạn có thể xài một trong những cách củ chuối như sau:
- Cứ dùng cái lisp này chạy cho ra đủ các cột trong Excel rồi thấy ghét thằng nào thì delete một phát cho chết. Vậy là chả phải nghĩ ngợi gì. Hề hề hề.
- Giở cái lisp này ra, tìm đến dòng:
qhlst (append qhlst (list (list cd sth ld cn dt)))
Nhòm vào đấy thấy thằng nào dễ ghét thì xóa béng nó đi là xong. Tỷ như ghét thằng chủ đất thì xóa thằng cd để thành :
qhlst (append qhlst (list (list sth ld cn dt)))
Ghét thằng số thửa nữa thì:
qhlst (append qhlst (list (list ld cn dt)))
Ghét thêm thằng diện tích thực tế thì:
qhlst (append qhlst (list (list ld cn ))) và thế là trên Excel chỉ còn nhõn hai thằng loại đất và diện tích cấp chứng nhận bạn ạ.
Hề hề hề, dễ như ăn ớt ấy mà..... Bạn cứ tùy nghi ứng biến miễn sao bạn khoái là OK hỉ.

3/- Cũng giống với bạn phongthien, mình khuyên bạn rằng để lisp chạy ngon lành bạn nên tổ chức lại các bản vẽ của bạn sao cho nó thống nhất về các loại đường nét màu sắc và tên các lớp để lisp nó đỡ hoa mắt mà chạy nhầm đường bạn nhé. Cái thằng lisp này nó ham vui lắm, cứ thấy chỗ nào có tí quen biết là nó tới thăm hỏi liền à, vậy nên nếu bạn không xiết chặt kỷ luật là anh cu này chạy tới bến luôn đó. hề hề hề....

Chúc bạn vui vẻ hỉ....

PS: từ sau nếu bạn muốn hỏi về cái lisp nào thì hãy post kèm với nó để mọi người đỡ công lần mò nhé. Hề hề hề....
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#2822 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 02 December 2010 - 03:26 PM

e muốn nhờ viết 1 lisp chia polyline,line,arc thành các đoạn thẳng có khoảng cách không bằng nhau,có thể nhập bằng tay hoặc từ 1 file text. Mong các anh giúp đở

Hề hề hề,
Mong bạn cho biết chính xác là cái khoảng cách ấy là gì ???? là độ dài của đường cần chia tính từ hai điểm chia hay là độ lớn của đoạn thẳng nối hai điểm chia????
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#2823 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 02 December 2010 - 03:29 PM

Các bác cho e hỏi :E có 1 lisp vẽ hình tam giác khi mở CAD lên thì báo:
Current ucs name: *WORLD*
Specify origin of UCS or [Face/NAmed/OBject/Previous/View/World/X/Y/Z/ZAxis]
: s
Enter name to save current UCS or [?]: luu_ucsname y Unknown command "Y".

Khi vẽ hình thì toàn bị ngược.Mong các bác giúp đỡ.Thanks

Hề hề hề,
Hãy post cái lisp đó lên nhé...
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#2824 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 02 December 2010 - 04:42 PM

Xin lỗi bác vì sự nóng vội của e.Lisp này hình như vẫn còn lỗi ,vẽ lần đầu thì ok nhưng lần 2,lần 3...thì không đúng vì text và các đường thẳng không nằm đúng vị trí .Mong bác xem lại giùm e.Cảm ơn sự nhiệt tình giúp đỡ của bác.

Chào bạn hugo75!
Xin lỗi bạn tại mình chưa test thử nhiều lần nên mới bị vậy. Mình sửa cho bạn đây. Bạn muốn cái đường tròn liền với cái pline thì quả thực rất khó. Có lẽ chỉ có thể dùng qleader để mình nghiên cứu tiếp cho bạn. trong khi chờ đợi bạn dùng tạm cái này mình đã sửa lỗi trên rồi.

;; free lisp from cadviet.com

;; free lisp from cadviet.com

(DEFUN C:gct ()
(SETQ DK1 (GETVAR "USERR3"))
(IF (= DK1 0)
    (PROGN
     (SETQ STR "1")
     (SETVAR "USERR3" 1)
    )    
    (SETQ STR (RTOS DK1))
)
(SETQ PRPT (STRCAT "\nSize <" STR ">:"))
(SETQ DK1 (GETREAL PRPT))
(IF (= DK1 NIL)
    (SETQ DK1 (GETVAR "USERR3"))
    (SETVAR "USERR3" DK1)
)
(setq dk (* DK1 50))
(INITGET 7)
(SETQ PTD (GETPOINT "\nFrom point:"))
(INITGET 7)
(SETQ PTC (GETPOINT PTD "\nTo point:"))
(SETQ GOCX (ANGLE PTD PTC))
(SETQ GOCY (+ GOCX (/ PI 2)))
(setq v (rtos dk))
(setq t (distance ptd ptc))
(setq r (/ t 2))
(SETQ PT1 (POLAR  PTc  0   (* 33 DK)))
(SETQ o (POLAR  PT1  0   (* 5.2 DK)))
(setq h (substr v 1 1))
(setq y (substr v 2 3))
(setq l (distance ptc pt1))
(setq pt3 (polar ptc 0 (/ l 1.85)))
(setq pt4 (polar pt3 (/ pi 2) (* 4 DK)))
(setq pt5 (polar ptd (- gocx (/ pi 2)) r))
(setq pt6 (polar ptd (+ gocx (/ pi 2)) r))
(setq pt7 (polar ptd (+ gocx  pi) r))
(setq pt8 (polar ptd  gocx   100))
(command "osnap"  "")
(command "layer" "m" "ghichu" "c" "163" """")
(COMMAND "COLOR" "84" "")
(COMMAND "STYLE" "T_THEP"  "romans.shx,vn1.shx" "" "" "" "" "" "" )
(command "text" "j" "m" pt4 (* 5 DK) 0)
(command "%%c10a150" )
(setq sua (entlast))
(if (= (tblsearch "block" "ghithep_t") nil)
(progn
(COMMAND "STYLE" "VnAvant"  ".VnAvant" "" "" "" "" "")
(command "attdef" "" 1 1 1 "j" "m" o (* 5 50) 0)
(setq ss (ssadd))
(setq ss (ssadd (entlast) ss))
(COMMAND "COLOR" "4" "")
(command "circle" o (* 5.2 50)"")
(setq ss (ssadd (entlast) ss))
(command "block" "ghithep_t" o ss "")
(command "insert" "ghithep_t" o DK1 DK1 "" "1")
)
(command "insert" "ghithep_t" o DK1 DK1 "" "1")
)
(COMMAND "COLOR" "150" "")
(COMMAND "PLINE" pt8 ptc pt1 "")
(command "circle" ptd 100 "")
(COMMAND "COLOR" "BYLAYER" "")
(command "osnap" "End,Mid,Cen,Quad,Int,Perp,Tan,Near,App,Int,Ext,Par"  )
(command "ddedit" sua pause)
)

  • 0
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#2825 790312

790312

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 204 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 03 December 2010 - 07:28 AM

Chào bạn hugo75!
Xin lỗi bạn tại mình chưa test thử nhiều lần nên mới bị vậy. Mình sửa cho bạn đây. Bạn muốn cái đường tròn liền với cái pline thì quả thực rất khó. Có lẽ chỉ có thể dùng qleader để mình nghiên cứu tiếp cho bạn. trong khi chờ đợi bạn dùng tạm cái này mình đã sửa lỗi trên rồi.


;; free lisp from cadviet.com

;; free lisp from cadviet.com

(DEFUN C:gct ()
(SETQ DK1 (GETVAR "USERR3"))
(IF (= DK1 0)
    (PROGN
     (SETQ STR "1")
     (SETVAR "USERR3" 1)
    )    
    (SETQ STR (RTOS DK1))
)
(SETQ PRPT (STRCAT "\nSize <" STR ">:"))
(SETQ DK1 (GETREAL PRPT))
(IF (= DK1 NIL)
    (SETQ DK1 (GETVAR "USERR3"))
    (SETVAR "USERR3" DK1)
)
(setq dk (* DK1 50))
(INITGET 7)
(SETQ PTD (GETPOINT "\nFrom point:"))
(INITGET 7)
(SETQ PTC (GETPOINT PTD "\nTo point:"))
(SETQ GOCX (ANGLE PTD PTC))
(SETQ GOCY (+ GOCX (/ PI 2)))
(setq v (rtos dk))
(setq t (distance ptd ptc))
(setq r (/ t 2))
(SETQ PT1 (POLAR  PTc  0   (* 33 DK)))
(SETQ o (POLAR  PT1  0   (* 5.2 DK)))
(setq h (substr v 1 1))
(setq y (substr v 2 3))
(setq l (distance ptc pt1))
(setq pt3 (polar ptc 0 (/ l 1.85)))
(setq pt4 (polar pt3 (/ pi 2) (* 4 DK)))
(setq pt5 (polar ptd (- gocx (/ pi 2)) r))
(setq pt6 (polar ptd (+ gocx (/ pi 2)) r))
(setq pt7 (polar ptd (+ gocx  pi) r))
(setq pt8 (polar ptd  gocx   100))
(command "osnap"  "")
(command "layer" "m" "ghichu" "c" "163" """")
(COMMAND "COLOR" "84" "")
(COMMAND "STYLE" "T_THEP"  "romans.shx,vn1.shx" "" "" "" "" "" "" )
(command "text" "j" "m" pt4 (* 5 DK) 0)
(command "%%c10a150" )
(setq sua (entlast))
(if (= (tblsearch "block" "ghithep_t") nil)
(progn
(COMMAND "STYLE" "VnAvant"  ".VnAvant" "" "" "" "" "")
(command "attdef" "" 1 1 1 "j" "m" o (* 5 50) 0)
(setq ss (ssadd))
(setq ss (ssadd (entlast) ss))
(COMMAND "COLOR" "4" "")
(command "circle" o (* 5.2 50)"")
(setq ss (ssadd (entlast) ss))
(command "block" "ghithep_t" o ss "")
(command "insert" "ghithep_t" o DK1 DK1 "" "1")
)
(command "insert" "ghithep_t" o DK1 DK1 "" "1")
)
(COMMAND "COLOR" "150" "")
(COMMAND "PLINE" pt8 ptc pt1 "")
(command "circle" ptd 100 "")
(COMMAND "COLOR" "BYLAYER" "")
(command "osnap" "End,Mid,Cen,Quad,Int,Perp,Tan,Near,App,Int,Ext,Par"  )
(command "ddedit" sua pause)
)

Chào bác Tú,lisp này bác có thể thêm dòng chọn đường tròn hay đường xiên không?Đường xiên nghêng 1 góc 45 độ và dài 200.Thanks.
  • 0

#2826 hochoaivandot

hochoaivandot

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 310 Bài viết
Điểm đánh giá: 107 (tàm tạm)

Đã gửi 03 December 2010 - 09:50 AM

Lệnh Pe (pedit) làm được việc này (nếu mình nhớ không nhầm)
không thì dùng lệnh reverse - lệnh này đảo chiều cả pline và spline

Cảm ơn Thaistreetz đã hồi âm.
Lệnh reverse thì Cad 2007 báo Unknown command "REVERSE". Press F1 for help. (Có lẽ nhầm chính tả tên lệnh)
Còn Pedit thì chắc bạn nhớ nhầm thật.
Xem lại dùm mình với. Cảm ơn 1 lần nữa.
  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#2827 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 03 December 2010 - 10:06 AM

Cảm ơn Thaistreetz đã hồi âm.
Lệnh reverse thì Cad 2007 báo Unknown command "REVERSE". Press F1 for help. (Có lẽ nhầm chính tả tên lệnh)
Còn Pedit thì chắc bạn nhớ nhầm thật.
Xem lại dùm mình với. Cảm ơn 1 lần nữa.

Có lẽ CAD phiên bản mới thì lệnh Pedit mới có chức năng này:

Command: _pedit
Enter an option [Close/Join/Width/Edit vertex/Fit/Spline/Decurve/Ltype
gen/Reverse/Undo]:
  • 1

#2828 dkkx3a

dkkx3a

    biết lệnh trim

  • Members
  • PipPipPip
  • 190 Bài viết
Điểm đánh giá: 57 (tàm tạm)

Đã gửi 03 December 2010 - 10:35 AM

[quote name='Tue_NV' date='Dec 3 2010, 10:06' post='120746']
Có lẽ CAD phiên bản mới thì lệnh Pedit mới có chức năng này:

Từ Cad2010 trở lên mới có, cái bạn cài cad mới có nhiều cái tiện hơn, Dùng lâu quay xuống cad cũ cứ qờ qờ... :undecided:
  • 1
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......

#2829 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 03 December 2010 - 02:17 PM

Cảm ơn Thaistreetz đã hồi âm.
Lệnh reverse thì Cad 2007 báo Unknown command "REVERSE". Press F1 for help. (Có lẽ nhầm chính tả tên lệnh)
Còn Pedit thì chắc bạn nhớ nhầm thật.
Xem lại dùm mình với. Cảm ơn 1 lần nữa.

à, mình dùng cad2010, vừa test xong, cả 2 đều đúng. chắc lệnh này mới đuợc đưa vào.
nếu không thì bạn dùng thằng này. Pline, spline rồi line, arc, circle, ellipse, text, hatch hay cả gradient fill nó xơi tất
  • 1

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#2830 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 03 December 2010 - 06:19 PM

Chào bác Tú,lisp này bác có thể thêm dòng chọn đường tròn hay đường xiên không?Đường xiên nghêng 1 góc 45 độ và dài 200.Thanks.

Của bạn đây:

(DEFUN C:gct ()
(SETQ DK1 (GETVAR "USERR3"))
(IF (= DK1 0)
    (PROGN
     (SETQ STR "1")
     (SETVAR "USERR3" 1)
    )    
    (SETQ STR (RTOS DK1))
)
(SETQ PRPT (STRCAT "\nSize <" STR ">:"))
(SETQ DK1 (GETREAL PRPT))
(IF (= DK1 NIL)
    (SETQ DK1 (GETVAR "USERR3"))
    (SETVAR "USERR3" DK1)
)
(setq dk (* DK1 50))
(INITGET 7)
(SETQ PTD (GETPOINT "\nFrom point:"))
(INITGET 7)
(SETQ PTC (GETPOINT PTD "\nTo point:"))
(SETQ GOCX (ANGLE PTD PTC))
(SETQ GOCY (+ GOCX (/ PI 2)))
(setq v (rtos dk))
(setq t (distance ptd ptc))
(setq r (/ t 2))
(SETQ PT1 (POLAR  PTc  0   (* 33 DK)))
(SETQ o (POLAR  PT1  0   (* 5.2 DK)))
(setq h (substr v 1 1))
(setq y (substr v 2 3))
(setq l (distance ptc pt1))
(setq pt3 (polar ptc 0 (/ l 1.85)))
(setq pt4 (polar pt3 (/ pi 2) (* 4 DK)))
(setq pt5 (polar ptd (- gocx (/ pi 2)) r))
(setq pt6 (polar ptd (+ gocx (/ pi 2)) r))
(setq pt7 (polar ptd (+ gocx  pi) r))
(setq pt8 (polar ptd  gocx   100))
(command "osnap"  "")
(command "layer" "m" "ghichu" "c" "163" """")
(COMMAND "COLOR" "84" "")
(COMMAND "STYLE" "T_THEP"  "romans.shx,vn1.shx" "" "" "" "" "" "" )
(command "text" "j" "m" pt4 (* 5 DK) 0)
(command "%%c10a150" )
(setq sua (entlast))
(if (= (tblsearch "block" "ghithep_t") nil)
(progn
(COMMAND "STYLE" "VnAvant"  ".VnAvant" "" "" "" "" "")
(command "attdef" "" 1 1 1 "j" "m" o (* 5 50) 0)
(setq ss (ssadd))
(setq ss (ssadd (entlast) ss))
(COMMAND "COLOR" "4" "")
(command "circle" o (* 5.2 50)"")
(setq ss (ssadd (entlast) ss))
(command "block" "ghithep_t" o ss "")
(command "insert" "ghithep_t" o DK1 DK1 "" "1")
)
(command "insert" "ghithep_t" o DK1 DK1 "" "1")
)
(initget 1 "T G")
(setq w (getkword "\nBan muon dung: [hinh Tron/Gach cheo]: "))
(if (= (strcase w) "T")
(progn
(COMMAND "COLOR" "150" "")
(COMMAND "PLINE" pt8 ptc pt1 "")
(command "circle" ptd 100 "")
)
(progn
(COMMAND "COLOR" "150" "")
(COMMAND "PLINE" PTD "w" 0 0 ptc pt1 "")
(setq pg1 (polar PTD (- pi (/ pi 4)) 100))
(setq pg2 (polar PTD (- (* pi 2) (/ pi 4)) 100))
(command "pline" pg1 "w" 20 20 pg2 "")
)
)
(COMMAND "COLOR" "BYLAYER" "")
(command "osnap" "End,Mid,Cen,Quad,Int,Perp,Tan,Near,App,Int,Ext,Par"  )
(command "ddedit" sua pause)
)

  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#2831 790312

790312

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 204 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 03 December 2010 - 09:20 PM

Của bạn đây:


(DEFUN C:gct ()
(SETQ DK1 (GETVAR "USERR3"))
(IF (= DK1 0)
    (PROGN
     (SETQ STR "1")
     (SETVAR "USERR3" 1)
    )    
    (SETQ STR (RTOS DK1))
)
(SETQ PRPT (STRCAT "\nSize <" STR ">:"))
(SETQ DK1 (GETREAL PRPT))
(IF (= DK1 NIL)
    (SETQ DK1 (GETVAR "USERR3"))
    (SETVAR "USERR3" DK1)
)
(setq dk (* DK1 50))
(INITGET 7)
(SETQ PTD (GETPOINT "\nFrom point:"))
(INITGET 7)
(SETQ PTC (GETPOINT PTD "\nTo point:"))
(SETQ GOCX (ANGLE PTD PTC))
(SETQ GOCY (+ GOCX (/ PI 2)))
(setq v (rtos dk))
(setq t (distance ptd ptc))
(setq r (/ t 2))
(SETQ PT1 (POLAR  PTc  0   (* 33 DK)))
(SETQ o (POLAR  PT1  0   (* 5.2 DK)))
(setq h (substr v 1 1))
(setq y (substr v 2 3))
(setq l (distance ptc pt1))
(setq pt3 (polar ptc 0 (/ l 1.85)))
(setq pt4 (polar pt3 (/ pi 2) (* 4 DK)))
(setq pt5 (polar ptd (- gocx (/ pi 2)) r))
(setq pt6 (polar ptd (+ gocx (/ pi 2)) r))
(setq pt7 (polar ptd (+ gocx  pi) r))
(setq pt8 (polar ptd  gocx   100))
(command "osnap"  "")
(command "layer" "m" "ghichu" "c" "163" """")
(COMMAND "COLOR" "84" "")
(COMMAND "STYLE" "T_THEP"  "romans.shx,vn1.shx" "" "" "" "" "" "" )
(command "text" "j" "m" pt4 (* 5 DK) 0)
(command "%%c10a150" )
(setq sua (entlast))
(if (= (tblsearch "block" "ghithep_t") nil)
(progn
(COMMAND "STYLE" "VnAvant"  ".VnAvant" "" "" "" "" "")
(command "attdef" "" 1 1 1 "j" "m" o (* 5 50) 0)
(setq ss (ssadd))
(setq ss (ssadd (entlast) ss))
(COMMAND "COLOR" "4" "")
(command "circle" o (* 5.2 50)"")
(setq ss (ssadd (entlast) ss))
(command "block" "ghithep_t" o ss "")
(command "insert" "ghithep_t" o DK1 DK1 "" "1")
)
(command "insert" "ghithep_t" o DK1 DK1 "" "1")
)
(initget 1 "T G")
(setq w (getkword "\nBan muon dung: [hinh Tron/Gach cheo]: "))
(if (= (strcase w) "T")
(progn
(COMMAND "COLOR" "150" "")
(COMMAND "PLINE" pt8 ptc pt1 "")
(command "circle" ptd 100 "")
)
(progn
(COMMAND "COLOR" "150" "")
(COMMAND "PLINE" PTD "w" 0 0 ptc pt1 "")
(setq pg1 (polar PTD (- pi (/ pi 4)) 100))
(setq pg2 (polar PTD (- (* pi 2) (/ pi 4)) 100))
(command "pline" pg1 "w" 20 20 pg2 "")
)
)
(COMMAND "COLOR" "BYLAYER" "")
(command "osnap" "End,Mid,Cen,Quad,Int,Perp,Tan,Near,App,Int,Ext,Par"  )
(command "ddedit" sua pause)
)

Chân thành cảm ơn bạn nhưng lisp vẫn còn lỗi,nếu đầu tiên mình vẽ chọn hình tròn,xong mình vẽ tiếp chọn đường xéo thì ok nhưng tiếp vẽ nữa chọ đường tròn thì đoạn polyline sẽ có độ dày 20.Mong bạn kiểm tra lại giùm mình tiện thể bạn thêm giùm mình 1 lựac chọn nửa là TRỐNG nếu lựa chọn này thì ngay đầu polyline sẽ không có chấm tròn và đưòng xéo.Lúc này sẽ có 3 lựa chọn TRỐNG,ĐƯỜNG TRÒN,ĐƯỜNG XÉO.
  • 0

#2832 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 03 December 2010 - 11:01 PM

Chân thành cảm ơn bạn nhưng lisp vẫn còn lỗi,nếu đầu tiên mình vẽ chọn hình tròn,xong mình vẽ tiếp chọn đường xéo thì ok nhưng tiếp vẽ nữa chọ đường tròn thì đoạn polyline sẽ có độ dày 20.Mong bạn kiểm tra lại giùm mình tiện thể bạn thêm giùm mình 1 lựac chọn nửa là TRỐNG nếu lựa chọn này thì ngay đầu polyline sẽ không có chấm tròn và đưòng xéo.Lúc này sẽ có 3 lựa chọn TRỐNG,ĐƯỜNG TRÒN,ĐƯỜNG XÉO.

Mình sửa và bổ xung cho bạn rồi này. Chúc bạn như ý.

;; free lisp from cadviet.com

(DEFUN C:gct ()
(SETQ DK1 (GETVAR "USERR3"))
(IF (= DK1 0)
    (PROGN
     (SETQ STR "1")
     (SETVAR "USERR3" 1)
    )    
    (SETQ STR (RTOS DK1))
)
(SETQ PRPT (STRCAT "\nSize <" STR ">:"))
(SETQ DK1 (GETREAL PRPT))
(IF (= DK1 NIL)
    (SETQ DK1 (GETVAR "USERR3"))
    (SETVAR "USERR3" DK1)
)
(setq dk (* DK1 50))
(INITGET 7)
(SETQ PTD (GETPOINT "\nFrom point:"))
(INITGET 7)
(SETQ PTC (GETPOINT PTD "\nTo point:"))
(SETQ GOCX (ANGLE PTD PTC))
(SETQ GOCY (+ GOCX (/ PI 2)))
(setq v (rtos dk))
(setq t (distance ptd ptc))
(setq r (/ t 2))
(SETQ PT1 (POLAR  PTc  0   (* 33 DK)))
(SETQ o (POLAR  PT1  0   (* 5.2 DK)))
(setq h (substr v 1 1))
(setq y (substr v 2 3))
(setq l (distance ptc pt1))
(setq pt3 (polar ptc 0 (/ l 1.85)))
(setq pt4 (polar pt3 (/ pi 2) (* 4 DK)))
(setq pt5 (polar ptd (- gocx (/ pi 2)) r))
(setq pt6 (polar ptd (+ gocx (/ pi 2)) r))
(setq pt7 (polar ptd (+ gocx  pi) r))
(setq pt8 (polar ptd  gocx   100))
(command "osnap"  "")
(command "layer" "m" "ghichu" "c" "163" """")
(COMMAND "COLOR" "84" "")
(COMMAND "STYLE" "T_THEP"  "romans.shx,vn1.shx" "" "" "" "" "" "" )
(command "text" "j" "m" pt4 (* 5 DK) 0)
(command "%%c10a150" )
(setq sua (entlast))
(if (= (tblsearch "block" "ghithep_t") nil)
(progn
(COMMAND "STYLE" "VnAvant"  ".VnAvant" "" "" "" "" "")
(command "attdef" "" 1 1 1 "j" "m" o (* 5 50) 0)
(setq ss (ssadd))
(setq ss (ssadd (entlast) ss))
(COMMAND "COLOR" "4" "")
(command "circle" o (* 5.2 50)"")
(setq ss (ssadd (entlast) ss))
(command "block" "ghithep_t" o ss "")
(command "insert" "ghithep_t" o DK1 DK1 "" "1")
)
(command "insert" "ghithep_t" o DK1 DK1 "" "1")
)
(initget 1 "TR T C")
(setq w (getkword "\nBan muon dung: [TRong/duong Tron/duong Cheo]: "))
(if (= (strcase w) "T")
(progn
(COMMAND "COLOR" "150" "")
(setvar "plinewid" 0)
(COMMAND "PLINE" pt8 ptc pt1 "")
(command "circle" ptd 100 "")
)
)
(if (= (strcase w) "C")
(progn
(COMMAND "COLOR" "150" "")
(setvar "plinewid" 0)
(COMMAND "PLINE" PTD ptc pt1 "")
(setq pg1 (polar PTD (- pi (/ pi 4)) 100))
(setq pg2 (polar PTD (- (* pi 2) (/ pi 4)) 100))
(setvar "plinewid" 20)
(command "pline" pg1 pg2 "")
)
)
(if (= (strcase w) "TR")
(progn
(COMMAND "COLOR" "150" "")
(setvar "plinewid" 0)
(COMMAND "PLINE" PTD ptc pt1 "")
)
)
(COMMAND "COLOR" "BYLAYER" "")
(command "osnap" "End,Mid,Cen,Quad,Int,Perp,Tan,Near,App,Int,Ext,Par"  )
(command "ddedit" sua pause)
)

  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#2833 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 04 December 2010 - 01:10 PM

Nhờ anh chỉ giúp lssp trên, nếu tăng khỏng cách cắt thửa đến 5 đơn vị ra ngòi biên thì mình cần chỉnh đoạn lệnh nào ?
Mong được anh giúp.

Nếu bạn muốn nhập khoảng cách bằng tay thì có thể thay dòng
(setq of (/ (sqrt (getvar "area")) 6))
bằng các dòng sau:
(setq of (cond (of) (10)))
(setq oldof of)
(setq of (getreal (strcat "\nNhap khoang cack muon cat: <" (rtos oldof 2 2) ">: ")))
(if (null of) (setq of oldof))
giá trị mặc định ban đầu là 10 sau khi bạn nhập giá trị vào sẽ tự lưu giá trị cho lần nhập sau.
  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#2834 minh_trungtq

minh_trungtq

    biết zoom

  • Members
  • Pip
  • 15 Bài viết
Điểm đánh giá: -3 (bình thường)

Đã gửi 05 December 2010 - 11:15 AM

nhờ anh chị viết dùm em lisp tự động sắp xếp bình đồ và trắc dọc vào viewport bên layout

em đang làm ở công ty KSTK em rất cần lisp tự động sắp xếp bình đồ và trắc dọc vào viewport,
mong các anh chị làm ơn viết dùm em:
cụ thể như thế này ạ! em có một trắc dọc dài 2km, em muốn chia nó thành 8 đoạn để ép vào khung của cơ quan. nếu tự cắt bằng tay trong viewport thì sẽ mất rất nhiều thời gian.
nên em xin cái lisp tự động bố trí kiểu như lisp tự động bố trí trắc ngang vào viewport của anh đoàn duy hùng ấy ạh!
em xin chân thành cảm ơn!
  • 0

#2835 lacvanhoa

lacvanhoa

    biết vẽ line

  • Members
  • PipPip
  • 23 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 05 December 2010 - 02:00 PM

Kính chào bác gia bạch, và các anh trên diễn đàn, em dùng ứng dụng Autocad.net API.dll trích xuất text trong bản vã sang exel, khi xuất text qua exel thì tất cả các text đều nằm cùng 1 cột, bác Gia Bạch và các anh trên diễn đàn có cách nào xuất text qua exel mà text thuộc layer sothua nằm 1 cột, text Loaidat nằm 1 cột, text dt-GCN nằm 1 cột nhưng 3 text sothua, Loaidat, dt-GCN cùng 1 thửa khi qua exel thì nằm cùng 1 hàng. file cad em làm vd để xuất text http://www.cadviet.c.../xuattext_1.dwg, file exel em đạc được và kết quả cuối cùng http://www.cadviet.c...es/3/text_1.rar, đây là ứng dụng Autocad.net APi.dll em dùng để xuất text http://www.cadviet.c...tetoexcel_3.zip

Sao không ai trả lời dùm mình hết, buồn wá!
Các bác cho em hỏi sao file cad em nó bị lỗi như thế này là lỗi gì vậy, làm sao khắc phục được http://www.cadviet.c...iles/3/to31.dwg
  • 0

#2836 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 05 December 2010 - 05:00 PM

Sao không ai trả lời dùm mình hết, buồn wá!
Các bác cho em hỏi sao file cad em nó bị lỗi như thế này là lỗi gì vậy, làm sao khắc phục được http://www.cadviet.c...iles/3/to31.dwg

Chào bạn lacvanhoa,
1/- Cách đặt vấn đề của bạn rất khó hiểu, không hiểu nổi bạn cần cái gì nữa.
Bạn muốn có một chương trình giống như thằng gì gì . net của bạn ư????
Bạn muốn sửa chữa hay khắc phục lỗi của chương trình đó????

2/- Bạn nhớ cho là không phải mọi người đều hiểu công việc của bạn, bạn trình bày kiểu đó thì may ra chỉ có những người cùng làm công việc như bạn, cùng sử dụng cái phần mềm chi chi đó của bạn và cũng đã gặp cùng cái lỗi như bạn mới hiểu được bạn ạ.
Cái phần mềm bạn post lên đã được mã hóa rồi, chỉ có người viết ra nó mới có thể biết đường mà mò, còn cánh nghiệp dư thì chỉ xem cho vui mắt chứ chả thể chọc ngoáy gì vào đó đâu..
Do vậy phương án tối ứu là bạn hãy thỉnh cầu ngay cái người cung cấp cho bạn cái phần mềm đó.
Còn nếu bạn muốn viết một cái khác thì phải trình bày cụ thể và tỉ mỉ hơn cái bạn cần, Nếu không thì dủ bạn có kêu la rát cổ cũng khó có thể giúp được bạn.

3/- File Cad bạn gửi chả bị lỗi gì cả, khi bạn zoom lớn thì cái đường biên nó bị che khuất một phần nên chả tạo được boundary. Chỉ có vậy thôi, Tại sao thì mình không giải thích được, bạn phải gọi thằng CAD mà hỏi. Hề hề hề....
Chúc bạn vui...
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#2837 790312

790312

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 204 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 06 December 2010 - 12:53 PM

Mình sửa và bổ xung cho bạn rồi này. Chúc bạn như ý.


;; free lisp from cadviet.com

(DEFUN C:gct ()
(SETQ DK1 (GETVAR "USERR3"))
(IF (= DK1 0)
    (PROGN
     (SETQ STR "1")
     (SETVAR "USERR3" 1)
    )    
    (SETQ STR (RTOS DK1))
)
(SETQ PRPT (STRCAT "\nSize <" STR ">:"))
(SETQ DK1 (GETREAL PRPT))
(IF (= DK1 NIL)
    (SETQ DK1 (GETVAR "USERR3"))
    (SETVAR "USERR3" DK1)
)
(setq dk (* DK1 50))
(INITGET 7)
(SETQ PTD (GETPOINT "\nFrom point:"))
(INITGET 7)
(SETQ PTC (GETPOINT PTD "\nTo point:"))
(SETQ GOCX (ANGLE PTD PTC))
(SETQ GOCY (+ GOCX (/ PI 2)))
(setq v (rtos dk))
(setq t (distance ptd ptc))
(setq r (/ t 2))
(SETQ PT1 (POLAR  PTc  0   (* 33 DK)))
(SETQ o (POLAR  PT1  0   (* 5.2 DK)))
(setq h (substr v 1 1))
(setq y (substr v 2 3))
(setq l (distance ptc pt1))
(setq pt3 (polar ptc 0 (/ l 1.85)))
(setq pt4 (polar pt3 (/ pi 2) (* 4 DK)))
(setq pt5 (polar ptd (- gocx (/ pi 2)) r))
(setq pt6 (polar ptd (+ gocx (/ pi 2)) r))
(setq pt7 (polar ptd (+ gocx  pi) r))
(setq pt8 (polar ptd  gocx   100))
(command "osnap"  "")
(command "layer" "m" "ghichu" "c" "163" """")
(COMMAND "COLOR" "84" "")
(COMMAND "STYLE" "T_THEP"  "romans.shx,vn1.shx" "" "" "" "" "" "" )
(command "text" "j" "m" pt4 (* 5 DK) 0)
(command "%%c10a150" )
(setq sua (entlast))
(if (= (tblsearch "block" "ghithep_t") nil)
(progn
(COMMAND "STYLE" "VnAvant"  ".VnAvant" "" "" "" "" "")
(command "attdef" "" 1 1 1 "j" "m" o (* 5 50) 0)
(setq ss (ssadd))
(setq ss (ssadd (entlast) ss))
(COMMAND "COLOR" "4" "")
(command "circle" o (* 5.2 50)"")
(setq ss (ssadd (entlast) ss))
(command "block" "ghithep_t" o ss "")
(command "insert" "ghithep_t" o DK1 DK1 "" "1")
)
(command "insert" "ghithep_t" o DK1 DK1 "" "1")
)
(initget 1 "TR T C")
(setq w (getkword "\nBan muon dung: [TRong/duong Tron/duong Cheo]: "))
(if (= (strcase w) "T")
(progn
(COMMAND "COLOR" "150" "")
(setvar "plinewid" 0)
(COMMAND "PLINE" pt8 ptc pt1 "")
(command "circle" ptd 100 "")
)
)
(if (= (strcase w) "C")
(progn
(COMMAND "COLOR" "150" "")
(setvar "plinewid" 0)
(COMMAND "PLINE" PTD ptc pt1 "")
(setq pg1 (polar PTD (- pi (/ pi 4)) 100))
(setq pg2 (polar PTD (- (* pi 2) (/ pi 4)) 100))
(setvar "plinewid" 20)
(command "pline" pg1 pg2 "")
)
)
(if (= (strcase w) "TR")
(progn
(COMMAND "COLOR" "150" "")
(setvar "plinewid" 0)
(COMMAND "PLINE" PTD ptc pt1 "")
)
)
(COMMAND "COLOR" "BYLAYER" "")
(command "osnap" "End,Mid,Cen,Quad,Int,Perp,Tan,Near,App,Int,Ext,Par"  )
(command "ddedit" sua pause)
)


Bác cho e hỏi nếu 1 bản vẽ chưa có block GHITHEP_T thì lisp thực hiện rất tốt nhưng nếu trong bản vẽ có block GHITHEP_T rồi thì khi vẽ block GHITHEP_T sẽ
không nằm đúng vị trí cuối của đường polyline.Mong bác xem lại giúp.Thanks.
  • 0

#2838 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 07 December 2010 - 03:03 PM

Bác cho e hỏi nếu 1 bản vẽ chưa có block GHITHEP_T thì lisp thực hiện rất tốt nhưng nếu trong bản vẽ có block GHITHEP_T rồi thì khi vẽ block GHITHEP_T sẽ
không nằm đúng vị trí cuối của đường polyline.Mong bác xem lại giúp.Thanks.

Hề hề hề, cái này có nhẽ là do cái block có sẵn của bạn có điểm gốc insert không đúng như cái block của bác ấy tạo ra. Bạn chỉ cần xem kỹ cái block ấy và hiệu chỉnh lại cái điểm chèn trong líp là OK mà.
Hề hề hề.
Việc chỉnh lísp cho bạn không khó, nhưng không biết bạn có bao nhiêu cái block sẵn có ấy mà hiệu chỉnh cho vừa bạn ạ. Được với anh cu này ắt lại chệch với anh cu khác, chúng nó kiện nhau thì bỏ u. Cách tốt nhất là bạn hãy chịu khó tìm hiểu một chút về cái lisp của bác ấy để có thể tùy chỉnh theo ý bạn là tốt nhất. Chấp luôn cả mấy anh bạn trái khoáy như vầy.
Hề hề hề....
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#2839 790312

790312

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 204 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 07 December 2010 - 03:43 PM

Hề hề hề, cái này có nhẽ là do cái block có sẵn của bạn có điểm gốc insert không đúng như cái block của bác ấy tạo ra. Bạn chỉ cần xem kỹ cái block ấy và hiệu chỉnh lại cái điểm chèn trong líp là OK mà.
Hề hề hề.
Việc chỉnh lísp cho bạn không khó, nhưng không biết bạn có bao nhiêu cái block sẵn có ấy mà hiệu chỉnh cho vừa bạn ạ. Được với anh cu này ắt lại chệch với anh cu khác, chúng nó kiện nhau thì bỏ u. Cách tốt nhất là bạn hãy chịu khó tìm hiểu một chút về cái lisp của bác ấy để có thể tùy chỉnh theo ý bạn là tốt nhất. Chấp luôn cả mấy anh bạn trái khoáy như vầy.
Hề hề hề....

Bác có thể chỉ cho e biết 2 block này khác nhau điểm nào với.Nếu được bác sửa giùm e đoạn lisp cho nó trùng với block có sẵn giùm e.E chân thành cảm ơn trước.
http://www.cadviet.c...drawing1_37.dwg
  • 0

#2840 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 07 December 2010 - 04:18 PM

Bác có thể chỉ cho e biết 2 block này khác nhau điểm nào với.Nếu được bác sửa giùm e đoạn lisp cho nó trùng với block có sẵn giùm e.E chân thành cảm ơn trước.
http://www.cadviet.c...drawing1_37.dwg

Hề hề hề,
Bạn này lại chơi khó nhau đây.....
1/- Bản vẽ bạn gửi chỉ có một block duy nhất là block tt. Nếu không nhầm thì điểm chèn của nó trùng với điểm đặt của cái text thuộc tính trong đó.
2/- Cái block thứ hai ở đâu chả biết nên thua luôn. Có nhẽ điểm đặt của nó ở bên Mỹ chăng. Hề hề hề.
3/- Cái block mà bác phamngoctukts tạo ra trong lisp có điểm chèn là điểm o cũng là điểm đặt của text thuộc tính nhưng bác ấy dùng căn text là Justify và Middle.
Điều này có nhẽ khác với cái text trong block của bạn chọn căn lề là bottom left chăng.
Bạn hãy xem lại nhé.....
Hề hề hề,....

Bạn muốn sửa lisp thì bạn phải post cái bản vẽ chứa block bạn có và cái kết quả bạn cần mới được, chứ nói suông vậy biết đâu mà mò. Hề hề hề.....

Bạn thử kiểm tra lại, hình như trong cái lisp của bác Phamngoctukts dòng code :
(command "attdef" "" 1 1 1 "j" "m" o (* 5 50) 0)
có dư một chữ số 1 thì phải.
Do đó có thể cái attribute tạo ra không đúng với ý muốn của bác ấy. Hề hề hề.....
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.